gpt4 book ai didi

c# - 使用 MySQL 时,为什么 Entity Framework 4 试图将长整数转换为小数?

转载 作者:可可西里 更新时间:2023-11-01 07:45:28 24 4
gpt4 key购买 nike

只要我有一个带有 BIGINT 主键的表,我就可以插入新记录,但不能更新现有记录。当我尝试进行更新时,出现以下错误:

“指定的值不是‘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“模型”没有定义键。为此 EntityType 定义键。

使用 long 而不是 ulong 不是我需要的,但我想它必须这样做。

最佳答案

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

关于c# - 使用 MySQL 时,为什么 Entity Framework 4 试图将长整数转换为小数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10856809/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com