Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/24.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/webpack/2.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# 实体框架实体属性作为对象类型_C#_.net_Asp.net Mvc - Fatal编程技术网

C# 实体框架实体属性作为对象类型

C# 实体框架实体属性作为对象类型,c#,.net,asp.net-mvc,C#,.net,Asp.net Mvc,我有一个无法更改的多个DB版本的情况。我有一个只读的MVC应用程序,EF连接到不同环境中的数据库。 当实体属性数据类型不匹配,实体框架抛出数据类型不匹配异常时,我遇到了一个问题。 我所做的是创建对象的属性类型并映射数据库中的一列,然后将其添加到原始生成的列“Passed”并跳过映射,将getter with object添加到Int32?转换。属性“\u passed”始终为空 也许有人知道如何解决object-to-Int32转换问题,或者为我指明了一个方向,让我找到一个更正确的方法来解决这个

我有一个无法更改的多个DB版本的情况。我有一个只读的MVC应用程序,EF连接到不同环境中的数据库。 当实体属性数据类型不匹配,实体框架抛出数据类型不匹配异常时,我遇到了一个问题。 我所做的是创建对象的属性类型并映射数据库中的一列,然后将其添加到原始生成的列“Passed”并跳过映射,将getter with object添加到Int32?转换。属性“\u passed”始终为空

也许有人知道如何解决object-to-Int32转换问题,或者为我指明了一个方向,让我找到一个更正确的方法来解决这个问题

谢谢, E


我认为不能对db first型号使用支持字段, 你可以试着这样做, 重写getter,若model.Passed的类型为bool,则检查true是否返回1,否则返回0,若不是bool,则返回此.Passed值

public object Passed {
    get
    {
        if (this.Passed.GetType() == typeof(bool))
        {
           return this.Passed == true ? 1 : 0;
        }
        else
        {
            return this.Passed;
        }
    }

什么?数据库中的数据类型为column
[column(“Passed”)]
并且您将其设置为私有,以便EF db不会看到它。。。所以,对于您正在尝试做的事情来说,这相当令人困惑……问题是,我有一个web应用程序用于另一个系统上使用的数据库。该系统有不同版本的DB,这意味着某些实体不同。因为我的解决方案是db优先,我从一个db生成实体,它不适合其他版本。我明白了,嗯,你不喜欢这个答案。。。但是我看到这种工作的唯一方式是为每个Db实例创建不同的上下文。。并且每一个都有正确的类型。无论您在当前环境中如何尝试,我都不认为它有效。不同的环境使部署非常复杂,这就是我希望为所有数据库提供“通用”解决方案的原因我有
“通用”解决方案用于所有数据库
,在这种情况下将具有不同的环境,正如我所建议的,我认为不可能做你想做的事<代码>部署非常复杂不应该如此,您可以简化该部分。如果没有更多关于你如何以及为什么按照你的方式进行设置的信息,就很难提出任何建议/建议。谷歌EF动态属性<代码>https://stackoverflow.com/questions/39458802/dynamic-property-binding-in-ef基本上和我说的一样。那件事引发了stackoverflow异常,Sadly很悲伤,我很抱歉
public object Passed {
    get
    {
        if (this.Passed.GetType() == typeof(bool))
        {
           return this.Passed == true ? 1 : 0;
        }
        else
        {
            return this.Passed;
        }
    }