第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何區(qū)分數(shù)據(jù)網(wǎng)格中的新行和現(xiàn)有行?

如何區(qū)分數(shù)據(jù)網(wǎng)格中的新行和現(xiàn)有行?

C#
慕桂英546537 2021-07-19 16:08:48
我在 WPF 應用程序中有一個普通的 DataGrid,它由ObservableCollection<T>. 我正在使用 Dapper 更新 SQL Server 數(shù)據(jù)庫。Dapper 可以毫無問題地更新現(xiàn)有記錄,但要將新記錄放入數(shù)據(jù)庫中,我必須插入它們。所以我必須打兩個 Dapper 電話;一個用于更新用戶對現(xiàn)有記錄所做的任何更改,另一個用于添加任何新記錄。如何區(qū)分ObservableCollection用戶添加的記錄與加載表單時從數(shù)據(jù)庫加載的原始記錄?
查看完整描述

2 回答

?
慕仙森

TA貢獻1827條經(jīng)驗 獲得超8個贊

假設 DTO 為


public class Document

{

    int Id { get; set; }

    string DocumentName { get; set; }

    bool IsNew { get; set; } // This field is not in the database

}

我可以使用這個事件處理程序:


private void Documents_CollectionChanged(object sender, System.Collections.Specialized.NotifyCollectionChangedEventArgs e)

{

    foreach(Document item in e.NewItems)

    {

        item.IsNew = true;

    }

}

標記用戶添加到數(shù)據(jù)網(wǎng)格的任何新記錄。從數(shù)據(jù)庫加載原始記錄后,我鉤住了這個處理程序:


public void LoadDocuments()

{

    var documents = myIdbConnection.GetAll<Document>();         

    Documents = new ObservableCollection<Document>(documents);

    Documents.CollectionChanged += Documents_CollectionChanged;

}

接著:


public void Save()

{

    myIdbConnection.Update(Documents.Where(x=>!x.IsNew));

    myIdbConnection.Insert(Documents.Where(x=>x.IsNew));

}


查看完整回答
反對 回復 2021-07-31
?
桃花長相依

TA貢獻1860條經(jīng)驗 獲得超8個贊

您可以省去事件監(jiān)聽。只需使用另一個值對新記錄進行默認初始化即可。


public class Document

{

    static bool IsNewInitializer { get; set; } = false;


    int Id { get; set; }

    string DocumentName { get; set; }

    bool IsNew { get; set; } = IsNewInitializer; // This field is not in the database

}


public void LoadDocuments()

{

    Document.IsNewInitializer = false;


    var documents = myIdbConnection.GetAll<Document>();

    Documents = new ObservableCollection<Document>(documents);


    Document.IsNewInitializer = true;

}

public void Save()

{

    myIdbConnection.Update(Documents.Where(x => !x.IsNew));

    myIdbConnection.Insert(Documents.Where(x => x.IsNew));

    foreach (var d in Documents.Where(x => x.IsNew))

    {

        d.IsNew = false;

    }

}


查看完整回答
反對 回復 2021-07-31
  • 2 回答
  • 0 關注
  • 149 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網(wǎng)微信公眾號