C# 跟踪变化的实体框架
我是MVC&Entity Framework的新手,并尝试跟踪更改。以下是我的代码片段:C# 跟踪变化的实体框架,c#,asp.net-mvc,entity-framework,C#,Asp.net Mvc,Entity Framework,我是MVC&Entity Framework的新手,并尝试跟踪更改。以下是我的代码片段: string historyText = "<ul>"; ICollection<LookUp> oldPositions = fromDB.LookUps; fromDB.LookUps.Clear(); IEnumerable<LookUp> allPositionTypes = lookUpRepository.GetByLookupTypeId(24); for
string historyText = "<ul>";
ICollection<LookUp> oldPositions = fromDB.LookUps;
fromDB.LookUps.Clear();
IEnumerable<LookUp> allPositionTypes = lookUpRepository.GetByLookupTypeId(24);
foreach (var interest in chkPositionType)
{
fromDB.LookUps.Add(allPositionTypes.Where(x => x.LookUpID == Convert.ToInt32(interest)).Single());
if (!oldPositions.Contains(allPositionTypes.Where(x => x.LookUpID == Convert.ToInt32(interest)).Single()))
historyText += "<li>" + "Position Type : <span class='history-old'> </span><span class='history-separator'>|</span><span class='history-new'>" + lkupRepo.GetByID(Convert.ToInt32(interest)).Name + "</span></li>";
}
historyText += "</ul>";
字符串历史文本=“”;
ICollection oldPositions=fromDB.LookUps;
fromDB.LookUps.Clear();
IEnumerable allPositionTypes=lookUpRepository.GetByLookupTypeId(24);
foreach(chkPositionType中的var权益)
{
fromDB.LookUps.Add(allPositionTypes.Where(x=>x.LookUpID==Convert.ToInt32(interest)).Single());
如果(!oldPositions.Contains(allPositionTypes.Where(x=>x.LookUpID==Convert.ToInt32(interest)).Single())
historyText+=“- ”+“位置类型:|“+lkupRepo.GetByID(Convert.ToInt32(interest)).Name+”
”;
}
历史文本+=“
”;
出于某种原因,我一清除查找,它就会将oldPositions设置为null。我还想知道哪些是我新增的,哪些是被删除但没有再新增的。所以基本上需要跟踪变化
有别的办法吗?如果更好的话,我也可以收养它
var oldPositions=fromDB.LookUps.ToList()
我认为调用Clear()方法时,oldPositions正在丢失对fromDB.Lookups的引用 ICollection oldPositions=fromDB.LookUps fromDB.LookUps.Clear()
oldPositions有一个指向fromDB.LookUps集合的引用指针。fromDB.LookUps集合对元素中其他对象的引用被释放,因此oldPositions将为空。
oldPositions
和fromDB.LookUps
引用了同一对象。