gpt4 book ai didi

c# - Entity Framework C# 将 int 转换为 bool

转载 作者:太空狗 更新时间:2023-10-29 22:26:14 25 4
gpt4 key购买 nike

我正在尝试用 C# MVC 重写一个 VB.NET WebForms 应用程序。我在使用 Entity Framework 实例化类时遇到其中一个属性的问题。

我的数据库“VATInclusive”中有一个列,其类型为“int”。原始应用程序将“1”或“0”隐式转换为“true”或“false”,但在我的应用程序中尝试这样做时,出现以下错误:

The 'VATInclusive' property on 'Shop' could not be set to a 'System.Int32' value. You must set this property to a non-null value of type 'System.Boolean'.

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

    [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;
}
}
}

最佳答案

根据所提供的答案中的一些建议,我已经纠正了这个问题。问题在于 setter 访问器以及 _VATIncusive 属性。通过将代码更改为以下内容,我设法使系统按预期工作。

但是,我觉得这不是最好的方法,但它似乎工作正常......

编辑:编辑:我已经根据 Ryan 和 hvd 的建议减少了获取访问器。

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

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

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

关于c# - Entity Framework C# 将 int 转换为 bool,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26577711/

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