Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/281.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# S#arp体系结构:管理父子关系_C#_Fluent Nhibernate_Parent Child_S#arp Architecture - Fatal编程技术网

C# S#arp体系结构:管理父子关系

C# S#arp体系结构:管理父子关系,c#,fluent-nhibernate,parent-child,s#arp-architecture,C#,Fluent Nhibernate,Parent Child,S#arp Architecture,因此,如果您有一个(比如)与技巧实体有一对多关系的狗实体,那么在添加对象等时如何保持集合的同步 也就是说,如果有一个Dog.Tricks集合,并且您想添加一个新的Trick,那么最佳做法是什么 通常,使用NHibernate的方法似乎是隐藏可变的技巧集合(NHibernate绑定到的)并显示一个不可变的IEnumberable集合。有关技术的讨论,请参见此问题:。这似乎是一种很好的方法,可以确保只有一种方法可以添加技巧—通过dog.AddTrick()方法—并保持集合的同步 但似乎因为S#arp

因此,如果您有一个(比如)与
技巧
实体有一对多关系的
实体,那么在添加对象等时如何保持集合的同步

也就是说,如果有一个
Dog.Tricks
集合,并且您想添加一个新的
Trick
,那么最佳做法是什么

通常,使用NHibernate的方法似乎是隐藏可变的
技巧
集合(NHibernate绑定到的)并显示一个不可变的IEnumberable集合。有关技术的讨论,请参见此问题:。这似乎是一种很好的方法,可以确保只有一种方法可以添加技巧—通过
dog.AddTrick()
方法—并保持集合的同步

但似乎因为S#arp使用Fluent,所以这种方法不太容易实现(除非我错过了什么?)


那么S#arp的最佳实践是什么呢?

这也是在S#中保持收藏同步的最佳实践。查看Fluent NHibernate以映射私有字段。您需要为您的Dog实体创建映射覆盖。此覆盖将表示tricks collect由camelcase字段访问


好的。对于
trick.Dog
属性(从子对象指向父对象)来说,受
保护的内部设置是最好的方法吗?(因此它只能在
dog.AddTrick()
方法中设置)老实说,这两种方法都可以。我更喜欢使用受保护的内部模式,但根据场景的不同,我采用了两种方式。