为什么在以下示例中需要[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的属性永远不会直接映射到数据库,而是首先被代码自动忽略。
答案 0 :(得分:5)
使用[NotMapped]属性基本上将该属性标记为不是实体/属性
因此EF不会尝试从数据库中映射/获取该属性
这个例子实际上说,NewBlogs不是像博客那样的实体。所以停止尝试从数据库中获取NewBlogs
答案 1 :(得分:0)
它被标记为NotMapped,因为它返回按需从DB获取的数据,而不是表示要存储的单独实体集。
答案 2 :(得分:0)
即使该属性没有setter,您也可以将其保留在数据库中。即:你有一个模型产品,它设置一个属性,比如你不想改变的构造函数中的Price(没有setter),但是你希望这个值保存在DB中