Entity framework EF7 RC2 linq select不包括新添加的记录
我有一个很快的问题。在EF 7 RC2中选择记录时,它似乎不包括新添加的记录 这是我的密码:Entity framework EF7 RC2 linq select不包括新添加的记录,entity-framework,linq,sqlite,uwp,entity-framework-core,Entity Framework,Linq,Sqlite,Uwp,Entity Framework Core,我有一个很快的问题。在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) {
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
是的,我忘了输入ef。但它仍然不起作用。在将CatId保存到数据库之前,它不会找到该CatId。它正在处理EF 7 RC1。@Sam我无法复制此问题。请提供一个简单的可复制代码样本。您可以上传您的代码项目并在此处发布链接。@XavierXie MSFT-我已回滚到EF-RC1,因为我不知道如何解决此问题。结果是数据没有保存到数据库中。到目前为止,我发现如果我用.NET本机工具链取消选中编译,它就会工作(即数据被保存)。但是,我太害怕在不通过每个保存模块确保数据正确保存的情况下,将更新版本提供给客户。所以,我回到了RC1。我现在很忙,当我有空的时候,我会尝试将我的代码子集并发布到这里。@Sam没问题。谢谢。谁说RC1的行为是正确的?为什么你仍然使用EF7(核心)RC2呢?