我们使用Miscrosoft的代码优先实体框架(4.1)映射到现有数据库。我们希望能够更改某些属性的数据类型和值,这些属性与表进行一对一的映射。例如,表中有一列确定记录是否为当前记录。它是一个整数列,其值为1或2。我们不想更改数据库,因为有许多不同的应用程序从该colum中获取数据,但是最好让映射到该表的类具有一个bool属性,即IsActive,如果表列为1,否则返回true。是否有一种方法可以配置EnityFrame工作,以便我们可以直接定义这个映射,而不需要在实际类上有两个属性,一个属性用于整数列(映射到数据库),另一个属性是从另一个类中计算出来的?我可以直接将布尔属性映射到整数列吗?
发布于 2011-09-21 10:26:09
简单的回答是不。EF在这个领域是完全愚蠢的,它完全缺少简单的类型映射。
这意味着您不能更改标量属性的类型,您的类实际上必须使用该int属性使用值1和2来定义IsActive。
解决办法可以是:
public class YourClass
{
public int IsActiveValue { get; set; }
[NotMapped]
public bool IsActive
{
get { return IsActiveValue == 2; }
set { IsActiveValue = value ? 2 : 1; }
}
}这种解决办法有一些缺点。
IsActvieValue必须对上下文查询中使用IsActive。
https://stackoverflow.com/questions/7488834
复制相似问题