2

我是 MVC 和实体框架的新手,正在尝试跟踪更改。这是我的代码片段:

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>";

出于某种原因,一旦我清除 Lookups,它也会将 oldPositions 设置为 null。我也想知道我添加的新的和那些被删除但没有再次添加的。所以基本上需要跟踪变化。

有没有替代方法?如果它更好,我也可以采用它。

4

2 回答 2

2
  1. 更改 oldPosition 以枚举 LookUp,如下所示
    var oldPositions = fromDB.LookUps.ToList();

  2. 从 DB.LookUps.Clear() 中删除它应该可以工作。

于 2012-12-13T16:13:20.817 回答
0

我相信 oldPositions 在调用 Clear() 方法时会失去对 fromDB.Lookups 的引用。

ICollection oldPositions = fromDB.LookUps;

fromDB.LookUps.Clear();

oldPositions 有一个指向 fromDB.LookUps 集合的引用指针。fromDB.LookUps 对来自元素的其他对象的集合引用被释放,因此 oldPositions 将为空。

于 2012-12-13T16:39:16.997 回答