Entity framework EF7 RC2 linq select不包括新添加的记录

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) {

我有一个很快的问题。在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

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