5

每当我有一个带有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 版后longulong仍然有效。如果属性是ulong.

EntityType 'Model' has no key defined. Define the key for this EntityType.

使用long代替ulong不是我需要的,但我猜它必须这样做。

4

1 回答 1

0

如果这恰好是数据库中的无符号 bigint,那么我相信它会映射到小数而不是 a long- 不知道为什么它不只使用 a ulong。但我会从那里开始,确保您的 bigint 已签名。

于 2012-06-01T20:25:24.453 回答