我试图用C#MVC重新编写VB.NET WebForms应用程序。使用 Entity Framework 实例化类时,属性之一存在问题。

我的数据库“VATInclusive”中有一列,类型为“int”。原始应用程序将“1”或“0”隐式转换为“true”或“false”,但是当尝试在我的应用程序中执行此操作时,出现以下错误:



当其他应用程序使用该表时,我不能简单地更改数据库中的类型。我尝试使用以下代码转换该值,但无论数据库是“0”还是“1”,它似乎只会返回false。有人可以提出解决方案吗?

    [Column("VATInclusive")]
    private int _VATInclusive { get; set; }

    [NotMapped]
    public bool VATInclusive
    {
        get
        {
            if (_VATInclusive == 0)
            {
                return false;
            }
            else
            {
                return true;
            }
        }
        set
        {
            if(_VATInclusive == 0)
            {
                this.VATInclusive = false;
            }
            else
            {
                this.VATInclusive = true;
            }
        }
    }

最佳答案

根据提供的答案提出的一些建议,我已纠正了该问题。问题出在设置访问器以及_VATIncusive属性上。通过将代码更改为以下代码,我设法使系统按预期工作。

但是,我认为这不是最好的方法,但是它似乎可以正常工作...

编辑:编辑:根据Ryan和hvd的建议,我减少了get访问器。

编辑:我不确定将两个属性都设置为public的含义。但是我认为这不会成为问题。

    [Column("VATInclusive")]
    public int _VATInclusive { get; set; }

    [NotMapped]
    public bool VATInclusive
    {
        get
        {
            return _VATInclusive != 0;
        }
        set
        {
            _VATInclusive = value ? 1 : 0;
        }
    }

10-05 23:20
查看更多