Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/redis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 为什么为一对多关系属性设置保护集_C#_Nhibernate_Fluent Nhibernate_Nhibernate Mapping - Fatal编程技术网

C# 为什么为一对多关系属性设置保护集

C# 为什么为一对多关系属性设置保护集,c#,nhibernate,fluent-nhibernate,nhibernate-mapping,C#,Nhibernate,Fluent Nhibernate,Nhibernate Mapping,我有客户和订单实体。在使用fluent hibernate为customer定义类时,为什么需要为Orders列表属性指定“protected set” public virtual IList<Order> Orders { get; protected set; } 公共虚拟IList命令{get;protected set;} 您无需在setter上指定受保护的。这样做是一个很好的设计 如果在setter上未指定访问修饰符,它将隐式地具有与属性本身相同的访问修饰符(publi

我有客户和订单实体。在使用fluent hibernate为customer定义类时,为什么需要为Orders列表属性指定“protected set”

public virtual IList<Order> Orders { get; protected set; }
公共虚拟IList命令{get;protected set;}

您无需在setter上指定受保护的
。这样做是一个很好的设计

如果在setter上未指定访问修饰符,它将隐式地具有与属性本身相同的访问修饰符(
public
)。当setter是public时,类的任何使用者都可以修改
Orders
属性并将其设置为另一个实例

public class Customer
{
    public virtual IList<Order> Orders { get; set; }
}

var customer = new Customer();
customer.Orders = new List<Order>();
public class Customer
{
    public virtual IList<Order> Orders { get; protected set; }
}

var customer = new Customer();
//customer.Orders = new List<Order>(); // error: can't modify property

var orderCount = customer.Orders.Count; // this will trigger lazy-loading