【发布时间】:2012-06-07 01:55:34
【问题描述】:
只要我有一个带有BIGINT 主键的表,我就可以插入新记录,但不能更新现有记录。当我尝试进行更新时,我收到以下错误:
"The specified value is not an instance of type 'Edm.Decimal'"
示例模型:
public class Model
{
public long ModelID { get; set; }
public DateTime ProcessedOn { get; set; }
}
示例更新代码:
public bool SetModelProcessed(long id)
{
var entity = db.models.SingleOrDefault(m => m.ModelID == id);
entity.ProcessedOn = DateTime.Now;
db.ObjectStateManager.ChangeObjectState(entity, System.Data.EntityState.Modified);
db.SaveChanges();
}
即使是像这个这样简单的模型对我来说也失败了。有人知道发生了什么吗?
编辑
我尝试了代码优先的方法。 Entity Framework 4.3 甚至无法生成 mySQL 数据库,这显然是 mySQL 和添加迁移功能后的 Entity Framework 版本的问题。
自从降级到版本 4.1.10715.0,long 有效,ulong 仍然无效。如果属性是 ulong,EF 不会将其确认为主键。
EntityType 'Model' has no key defined. Define the key for this EntityType.
使用long 代替ulong 不是我需要的,但我猜它必须这样做。
【问题讨论】:
-
你能显示继承自
DbContext的db类吗? -
这不是代码优先,因此实体类继承自 ObjectContext。你想看那堂课吗?
标签: c# asp.net mysql entity-framework