我有一个非常快速的问题。在EF 7 RC2中选择记录时,它似乎不包括新添加的记录。
这是我的代码:
public tblCategory AddOrUpdateCat(ref DbLocal ef, int catId, string catName, int catType)
{
tblCategory db = ef.tblCategories.FirstOrDefault(rec => (rec.CatId == catId));
if (db == null)
{
db = new tblCategory();
db.CatId = catId;
ef.tblCategories.Add(db);
}
db.Name = catName;
db.CatType = catType;
ef.SaveChanges();
return db;
}
第二次使用相同的CatId调用该函数会引发异常:
引发异常:Microsoft.EntityFrameworkCore.dll中的“ System.InvalidOperationException”
附加信息:无法跟踪实体类型'tblCategory'的实例,因为已经跟踪了具有相同键的该类型的另一个实例。添加新实体时,对于大多数键类型而言,唯一
这是因为第二次使用相同的ID调用
ef.tblCategories.FirstOrDefault(rec => (rec.CatId == catId))
不会检索新添加的记录。此行为不同于RC1。任何想法如何使其像RC1一样工作吗?
谢谢!
最佳答案
不是tblCategory db = ef.tblCategories.FirstOrDefault(rec => (rec.CatId == catId));
还是catId
是主键,则tblCategory db = ef.tblCategories.Find(catId);
假设ef
是您的DbContext
关于entity-framework - EF7 RC2 LINQ选择不包括新添加的记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41889977/