Entity Framework Code First 只读集合

3
作为一个新手使用实体框架,已经几乎用只读集合开发了所有的类,我的问题是:
是否有办法在 Code First 中使用只读集合?
或者
是否应该在 Code First 中使用只读集合?

参考一下,这里有一个类似的新问题,其中包含一些有趣的答案: https://dev59.com/_Wgu5IYBdhLWcg3wnoWC - Bartosz
2个回答

3

Entity Framework支持通过后备字段实现只读集合

需要遵循一些约定:字段必须以'_'开头。请参见下面代码中的_posts字段。

public class Blog
{
    public int BlogId { get; set; }

    private string _url;

    public string Url
    {
        get { return _url; }
        set { _url = value; }
    }

    //backing field
    private List<Post> _posts;

    public IReadOnlyList<Post> Posts => _posts.AsReadOnly();

}

public class Post{

  public int Id {get;set;}
  public string  Title {get;set;}
  public string Content {get;set;}

} 

1

没有办法在EF中使用只读集合,因为即使在从数据库读取实体的材料化过程中,EF也必须使用实体填充该集合或将可写集合分配给您的导航属性。


谢谢。根据我所阅读(和尝试)的关于Code First的所有内容,这似乎是正确的答案,但我找不到任何相关文档。 - Minnie
实际上我现在无法给你任何链接。我会尽力搜索一下,但我现在不知道有什么链接。 - Ladislav Mrnka
谢谢,我已经添加了一个新的关于文档的问题,因为我不想扩大这个问题:只读属性的文档 - Minnie
2
那么,在领域驱动设计方法中,如何制定聚合根以强制执行不变量呢?这应该是可能的,因为可以使用EF填充实体的“内部状态”,然后开发人员可以按自己的方式公开它。 - SuperJMN

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接