EF代码首先是NotMapped属性

时间:2013-12-18 14:11:05

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

为什么在以下示例中需要[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的属性永远不会直接映射到数据库,而是首先被代码自动忽略。

3 个答案:

答案 0 :(得分:5)

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

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

这个例子实际上说,NewBlogs不是像博客那样的实体。所以停止尝试从数据库中获取NewBlogs

答案 1 :(得分:0)

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

答案 2 :(得分:0)

即使该属性没有setter,您也可以将其保留在数据库中。即:你有一个模型产品,它设置一个属性,比如你不想改变的构造函数中的Price(没有setter),但是你希望这个值保存在DB中