在Entity Framework中添加对象到数据库时遇到的问题

5
我将尝试将一个对象添加到数据库中的以下代码:
public static void saveAudit(List<AUDIT> audit)
{
 Entities dao = new Entities();

 foreach (CMUAUDIT a in audit)
 {
    dao.CMUAUDITs.AddObject(a);
 }

 dao.SaveChanges();
}

然而我得到了以下错误信息:

"...不包含 'AddObject' 的定义,也找不到接受类型为 'System.Data.Entity.DbSet' 的第一个参数的扩展方法 'AddObject' (您是否缺少 using 指令或程序集引用?)"

我进行了一些搜索,并提到了主键可能与此有关。 有什么建议吗?

如果使用的是DB2数据库,是否会有任何区别?

1个回答

9

...System.Data.Entity.DbSet...: 显然,你的类 Entities 是从 DbContext 而不是 ObjectContext 派生的。在这种情况下,CMUAUDITs 将是一个 DbSet<T> (而不是一个 ObjectSet<T>)。将实体添加到 DbSet<T> 的正确方法是:

dao.CMUAUDITs.Add(a);

AddObject 方法仅适用于 ObjectSet<T>


DbContext和ObjectContext有什么区别? - stats101
1
@stats101:DbContext是一个包装了ObjectContext的简化API。它还包含“Code First”开发策略。建议优先使用DbContext,因为它更易于使用和处理 - 除非您有一些高级要求,这些要求在DbContext中不可用,例如映射到存储过程。链接:https://dev59.com/cXA75IYBdhLWcg3wGlEa#3473323 和 http://blogs.msdn.com/b/adonet/archive/2011/04/11/ef-4-1-released.aspx - Slauma

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接