【问题标题】:EF Code first NotMapped AttributeEF Code first NotMapped 属性
【发布时间】:2013-12-18 14:11:05
【问题描述】:

为什么在以下示例中需要 [NotMapped] 属性:

public virtual ICollection<Blog> Blogs { get; set; }

[NotMapped]
    public List<Blog> NewBlogs{
        get{
            return Blogs.Where(x=>x.Date > DateTime.Now).ToList();
        }
    }

没有 [NotMapped] 属性我得到一个异常:

无效的列名 Blog_ID

数据库中的列名是 BlogID。

编辑

我希望,没有 setter 的属性永远不会直接映射到数据库并首先被代码自动忽略。

【问题讨论】:

    标签: c# .net entity-framework ef-code-first


    【解决方案1】:

    使用 [NotMapped] 属性基本上可以将该属性标记为不是实体/属性

    所以 EF 不会尝试从数据库中映射/获取该属性

    该示例实际上是说,NewBlogs 不是博客之类的实体。所以停止尝试从数据库中获取 NewBlogs

    【讨论】:

      【解决方案2】:

      它被标记为 NotMapped,因为它返回的是按需从数据库中获取的数据,而不是表示要存储的单独的一组实体。

      【讨论】:

        【解决方案3】:

        即使该属性没有设置器,您也可以将其保存在数据库中。即:您有一个模型产品,它在构造函数中设置了一个属性,例如您不想更改的价格(没有设置器)但您希望该值保留在数据库中

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2013-06-02
          • 2011-12-20
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2013-10-21
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多