首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >代码优先实体框架

问代码优先实体框架
EN

Stack Overflow用户
提问于 2011-09-20 16:57:27
回答 1查看 696关注 0票数 2

我们使用Miscrosoft的代码优先实体框架(4.1)映射到现有数据库。我们希望能够更改某些属性的数据类型和值,这些属性与表进行一对一的映射。例如,表中有一列确定记录是否为当前记录。它是一个整数列,其值为1或2。我们不想更改数据库,因为有许多不同的应用程序从该colum中获取数据,但是最好让映射到该表的类具有一个bool属性,即IsActive,如果表列为1,否则返回true。是否有一种方法可以配置EnityFrame工作,以便我们可以直接定义这个映射,而不需要在实际类上有两个属性,一个属性用于整数列(映射到数据库),另一个属性是从另一个类中计算出来的?我可以直接将布尔属性映射到整数列吗?

EN

回答 1

Stack Overflow用户

发布于 2011-09-21 10:26:09

简单的回答是不。EF在这个领域是完全愚蠢的,它完全缺少简单的类型映射。

这意味着您不能更改标量属性的类型,您的类实际上必须使用该int属性使用值1和2来定义IsActive。

解决办法可以是:

代码语言:javascript
复制
public class YourClass
{
    public int IsActiveValue { get; set; }
    [NotMapped]
    public bool IsActive
    {
        get { return IsActiveValue == 2; }
        set { IsActiveValue = value ? 2 : 1; }
    }
}

这种解决办法有一些缺点。

  • 您必须具有两个属性,并且IsActvieValue必须对上下文
  • 可见,您不能在linq- to

查询中使用IsActive。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7488834

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档