我必须将集合与列表用于导航属性

Mik*_*e L 6 c# entity-framework-core

C#CollectionList有什么区别?我的意思是我应该使用哪一个作为导航属性:

public Collection<OrderDetail> OrderDetails { get; set; }
Run Code Online (Sandbox Code Playgroud)

或者

public List<OrderDetail> OrderDetails { get; set; }
Run Code Online (Sandbox Code Playgroud)

Cod*_*ter 6

似乎没有这方面的文档,但实体框架支持任何IEnumerable<T>集合导航属性。

所以你可以将它们声明为:

  • IEnumerable<T>
  • ICollection<T>
  • Collection<T>
  • HashSet<T>
  • IList<T>
  • List<T>

可能还有更多。就实体框架而言,没有什么区别,它会在运行时分配适当的一个,并且除了调用其中的AddRange()大多数之外,还可以对每个实体执行它所做的所有操作,但是您什么时候想使用它呢?

例如,如果您想要数据绑定,您可以使用ObservableCollection<T>,否则我会使用仍然允许添加项目的最简洁的界面:ICollection<T>