实体框架实体属性为对象类型

时间:2017-05-24 11:00:52

标签: c# .net asp.net-mvc

我有一种情况,我有多个数据库版本,我无法更改。我只读了MVC应用程序,EF在不同的环境中附加到那些数据库。 当实体属性数据类型不匹配且Entity Framework抛出数据类型不匹配异常时,我遇到了问题。 我所做的是创建对象的属性类型并在DB中映射一列然后添加到原始生成的列“Passed”并跳过映射,将对象的getter添加到Int32?转换。财产“_passed”总是令人遗憾。

也许有人知道如何解决Int32转换问题的对象,或者指出一个更正确的方法来解决这个问题?

谢谢, ë

[Table("VotingSession")]
public partial class VotingSession
{

    [Column("Passed")]
    public object _passed;
    [DatabaseGenerated(DatabaseGeneratedOption.None)]
    public int Id { get; set; }

    public int Agenda_id { get; set; }

    public double? TotalLoggedIn { get; set; }
    [NotMapped]
    public object Passed {
        get
        {
            if (_passed.GetType() == typeof(bool))
            {
               return (bool)_passed == true ? 1 : 0;
            }
            else
            {
                return _passed;
            }
        }

    }

    [NotMapped]
    public int? Quorum { get; set; }

1 个答案:

答案 0 :(得分:0)

我认为你不能为db first模型使用支持字段, 你可以尝试这样做, 覆盖getter,如果是model的类型.Passed是bool,检查是否返回1否则为0,如果不是bool,则返回this.Passed值;

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