C# 代码优先实体中的自定义ICollection列表设置器

C# 代码优先实体中的自定义ICollection列表设置器,c#,asp.net-mvc,entity-framework,ef-model-first,C#,Asp.net Mvc,Entity Framework,Ef Model First,我使用的是EF6,我想将集合的初始化移到实体本身,这样代码就可以编写一次,教程不会这样做,只是想知道它是否可以?我对底层实体框架的了解还不够,还不知道这是否合适 例如: [NotMapped] private List<MySuggestion> _mySelections; public virtual ICollection<MySuggestion> mySuggestions { get {

我使用的是EF6,我想将集合的初始化移到实体本身,这样代码就可以编写一次,教程不会这样做,只是想知道它是否可以?我对底层实体框架的了解还不够,还不知道这是否合适

例如:

        [NotMapped]
    private List<MySuggestion> _mySelections;

public virtual ICollection<MySuggestion> mySuggestions {
        get 
        {
            if (_mySelections == null)
            {
                _mySelections = new List<MySuggestion>();
            }

            return _mySelections;
        }
        set;
    }
[未映射]
私人名单选举;
公共虚拟ICollection我的建议{
得到
{
如果(_==null)
{
_mySelections=新列表();
}
重新选举;
}
设置
}
另一种选择是,根据需要在控制器/存储库中初始化列表,如下所示:

if (thing.mySuggestions == null){
   thing.mySuggestions = new List<Suggestion> ();
}
if(thing.mySuggestions==null){
thing.mySuggestions=新列表();
}

应该可以正常工作。不过,您需要为setter指定一个主体

set
{
    _mySelections = value;
}