我们正在使用Miscrosoft的代码第一实体框架(4.1)来映射到现有数据库。我们希望能够更改一些属性的数据类型和值,这些属性与表一对一映射。例如,表上有一列确定记录是否是最新的。它是一个整数列,值为1或2.我们不想更改数据库,因为有很多不同的应用程序从该列中获取数据,但是我们的代码将这个类映射到该列是很好的table有一个isActive的bool属性,如果表列为1则返回true,否则返回false。有没有办法配置EnityFrame工作,以便我们可以直接定义这个映射而不在实际类上有两个属性,一个用于整数列(映射到数据库),另一个布尔属性从另一个计算?我可以将布尔属性直接映射到整数列吗?
答案 0 :(得分:1)
简单的答案是否定的。 EF在这个领域是完全愚蠢的,它完全没有简单的类型映射。
这意味着您无法更改标量属性的类型,并且您的类确实必须使用值1和2来处理该int属性以定义IsActive
。
解决方法可以是:
public class YourClass
{
public int IsActiveValue { get; set; }
[NotMapped]
public bool IsActive
{
get { return IsActiveValue == 2; }
set { IsActiveValue = value ? 2 : 1; }
}
}
此解决方法有一些缺点
IsActvieValue
必须对上下文可见IsActive