我有一种情况,我有多个数据库版本,我无法更改。我只读了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; }
答案 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;
}
}