繁体   English   中英

在EF Core中实现“多个”导航属性的最佳实践是什么

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM