Ant*_*Ant 5 c# entity-framework
我试图在C#MVC中重写一个VB.NET WebForms应用程序.使用Entity Framework实例化类时,我遇到了其中一个属性的问题.
我的数据库"VATInclusive"中有一列,类型为'int'.原始应用程序隐式将"1"或"0"转换为"true"或"false",但在我的应用程序中尝试执行此操作时,出现以下错误:
'Shop'上的'VATInclusive'属性无法设置为'System.Int32'值.必须将此属性设置为类型为"System.Boolean"的非null值.
我不能简单地改变数据库中的类型,因为其他应用程序使用该表.我已经尝试使用以下代码转换值,但它似乎只返回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;
}
}
}
Run Code Online (Sandbox Code Playgroud)
根据提供的答案提供一些建议,我已经纠正了这个问题.问题在于setter访问器以及_VATIncusive属性.通过将代码更改为以下代码,我设法使系统按预期工作.
但是,我觉得这不是最好的方法,但似乎工作正常......
编辑:编辑:根据Ryan和hvd的建议,我减少了获取访问器.
编辑:我不确定将这两个属性设置为公开的含义.但我不认为这会成为一个问题.
[Column("VATInclusive")]
public int _VATInclusive { get; set; }
[NotMapped]
public bool VATInclusive
{
get
{
return _VATInclusive != 0;
}
set
{
_VATInclusive = value ? 1 : 0;
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7439 次 |
| 最近记录: |