目前我正在使用以下代码从DBContext修改的条目
重构实体假设我的实体类是
public partial class JournalEntryCode : IAuditColumns
{
public JournalEntryCode()
{
this.JournalEntries = new HashSet<JournalEntry>();
}
public int journal_entry_code_pk { get; set; }
public string journal_entry_code { get; set; }
public System.DateTime tstamp { get; set; }
public virtual ICollection<JournalEntry> JournalEntries { get; set; }
}
目前我通过以下例程来实现这个问题的解决方案(并且它有效)但我必须相信有更优雅的方法来做到这一点......
private List<JournalEntryCode> GetListModifedEntities()
{
List<JournalEntryCode> listJournalEntryCodes = new List<JournalEntryCode>();
var changeInfo = Context.ChangeTracker.Entries()
.Where(t => t.State == EntityState.Modified)
.Select(t => new
{
Current = t.CurrentValues.PropertyNames.ToDictionary(pn => pn, pn => t.CurrentValues[pn]),
});
foreach (var change in changeInfo)
{
JournalEntryCode jec = new JournalEntryCode();
foreach (var pair in change.Current)
{
switch (pair.Key)
{
case "journal_entry_code_pk":
jec.journal_entry_code_pk = (int)pair.Value;
break;
case "journal_entry_code":
jec.journal_entry_code = (string)pair.Value;
break;
case "tstamp":
jec.tstamp = (DateTime)pair.Value;
break;
}
}
listJournalEntryCodes.Add(jec);
}
return listJournalEntryCodes;
}
答案 0 :(得分:0)
DbPropertyValues
有一个方法ToObject
,您可以用它来创建一个新的分离对象,例如实体的当前值:
return Context.ChangeTracker.Entries<JournalEntryCode>()
.Where(e => e.State == EntityState.Modified)
.Select(e => e.CurrentValues.ToObject())
.Cast<JournalEntryCode>()
.ToList();