【发布时间】:2017-01-17 20:12:47
【问题描述】:
我正在处理一个已移交给我的现有项目。它使用 EF5。我在数据库中创建了一个新表,并试图在该表中添加一行。我习惯使用 DBContext,但在这种情况下,现有代码似乎使用 ObjectContext。
我试图在数据库中创建一个新行,但这不起作用:
using (var context = new MyDatabaseEntities())
{
var paymentLog = context.PaymentLog.CreateObject();
paymentLog.Guid = Guid.NewGuid();
paymentLog.ErrorCode = errorCode.ToString();
paymentLog.ErrorMessage = message;
paymentLog.Timestamp = DateTime.Now;
context.SaveChanges();
}
这样,自然不会对数据库进行任何更改。当我添加以下行 context.PaymentLog.AddObject(paymentLog); 时,我收到一条错误消息“EntityKey 属性只能在属性的当前值为 null 时设置”。
另外,当我尝试附加类似于 DBContext 工作方式的实体时,我也会收到类似的错误。
我做错了吗?
编辑:我还尝试了以下方法:
context.PaymentLog.Attach(paymentLog);
context.ObjectStateManager.ChangeObjectState(paymentLog, System.Data.EntityState.Added);
context.SaveChanges();
这会产生此错误:“具有临时 EntityKey 值的对象无法附加到对象上下文”
【问题讨论】:
标签: c# .net database entity-framework