entity-framework - EF7 RC2 LINQ选择不包括新添加的记录

标签 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)
    {
        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/

相关文章:

entity-framework - 必须将外键映射到概念上参与外键关联的某些AssociationSet或EntitySet

C#:测试 Entity Framework FromSql 以确保语法正确

c# - 在 C# 中向 SQLite 数据库添加大量数据

.net - 在应用程序中添加动态数据透视表的最佳方式

c# - MVC 4 后期绑定(bind) DataContext 实体 LINQ 引用

c++ - ECS——一个实体是否可以拥有多个给定类型的组件

c# - linq "System.NotSupportedException"有错误

c# - 自定义属性和 lambda 表达式

linq - Entity Framework 似乎不必要地两次加入同一个表

c++ - 调试断言失败 : Invalid Null Pointer