[英]What is the Best practice for implementing a 'many' navigation property in EF Core
因此,对于使用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? 在这种情况下防止这种情况的最佳情况是什么?
我的答案是这样的:
public ICollection<Resource> Resources { get; set; } = new List<Resource>();
而关于类型。 您可能不应该将List用作属性的声明类型,我想说,最佳实践是使用接口声明这些属性(您可能希望在某个时候更改实际的实例类)。 此外,不要在列表/集合/枚举器中公开比您绝对需要更多的方法。 在大多数情况下,应该使用ICollection或IEnumerable。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.