Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/37.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在使用MySQL时,EntityFramework4为什么要尝试将long转换为十进制?_C#_Asp.net_Mysql_Entity Framework - Fatal编程技术网

C# 在使用MySQL时,EntityFramework4为什么要尝试将long转换为十进制?

C# 在使用MySQL时,EntityFramework4为什么要尝试将long转换为十进制?,c#,asp.net,mysql,entity-framework,C#,Asp.net,Mysql,Entity Framework,每当我有一个带有BIGINT主键的表时,我可以插入新记录,但不能更新现有记录。当我尝试执行更新时,出现以下错误: “指定的值不是'Edm.Decimal'类型的实例” 示例模型: public class Model { public long ModelID { get; set; } public DateTime ProcessedOn { get; set; } } 更新代码示例: public bool SetModelProcessed(long id) {

每当我有一个带有
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“Model”未定义键。定义此EntityType的键。


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

如果这恰好是数据库中的一个无符号bigint,那么我相信它会被映射到一个十进制而不是
long
-不确定为什么它不使用
ulong
。但是我要从这里开始,确保您的bigint已签名。

您能显示从
DbContext
继承的db类吗?这不是代码优先,所以entities类从ObjectContext继承。你想看那个课程吗?起初,我用的是ulong。我发现一些文章说EF不支持映射到无符号类型。所以我试着只使用一个bigint/long,但也有同样的问题。但是你确定它是数据库中的一个bigint,而不是一个未签名的bigint吗?当我尝试使用ulong时,它最初是未签名的。我从头开始创建了一个新表,其中只有一个bigint(unsigned)和date字段来匹配上述模型。