因此,我使用List<T>
的数量越来越多的数据库模型用于“众多”导航属性。一个例子可能是这样的:
public class ResourceType
{
public int ResourceTypeId { get; set; }
public string Name { get; set; }
public List<Resource> Resources { get; set; }
}
我在阅读C#时的好习惯是为了避免返回null
而不是空列表。我可以想到几种方法来实现这一目标。
public List<Resource> Resources { get; set; } = new List<Resource>();
或者甚至通过这样做:
private List<Resource> _Resources { get; set; }
public List<Resource> Resources {
get {
if (_Resources == null) {
_Resources = new List<Resource> ();
}
return _Resources;
}
set {
_Resources = value;
}
}
在其他地方,人们建议使用ICollection<T>
,如何阻止此操作返回null?
同时,设计EF模型时的经验法则是模型应尽可能地代表表格。这条规则是否打破了上述任何一个例子?
所有这些都引出了一个问题:处理这类房产的最佳方法是什么?应该使用什么类型,是否应该阻止返回null?在这种情况下防止这种情况的最佳情况是什么?
答案 0 :(得分:0)
我的回答是这样做:
public ICollection<Resource> Resources { get; set; } = new List<Resource>();
关于类型。您可能不应该使用List作为属性的声明类型,我会说最佳做法是使用接口声明这些属性(您可能希望在某些时候更改实际的实例类)。此外,不要在list / collection / enumerator中公开更多方法,然后你需要它。在大多数情况下,ICollection或IEnumerable是要走的路。