我正在实施福勒的问责制模式。我有Party子类User和PeopleGroup。我有Accountability and AccountabilityType。我将Party映射为表,User和PeopleGroup都映射为单独的表。最后是一个Accountability_Party交叉引用表。
所以这一切都很好,但是,这就是问题所在。 如果我找到一个人组并说
pg.ChildAccountablities.Where(x=>x.PartyType == "User")
因此,如果获得所有类型为User的参与方,我就无法将该聚会转交给用户。我想这是向上倾斜。
我需要这样做的原因是因为我正在使用具有User(IUser)接口的权限系统来识别它。我想说让所有分配给这个人员组的用户并给他们这个权限。但是,许可系统接口需要一个带有IUser接口的类来进行分配,当然Party没有 也许我可以说像
_repository.Query<User>(x=>x.ParentAccountabilities.Any(y=>y.Parent == myPeopleGroup))
但这似乎是一种迂回的做法。
对此问题的任何想法或见解将不胜感激。
谢谢,
RAIF
更新
此处是福勒的accountability pattern链接。
代码或更确切地说映射如下
public class PartyMap : DomainEntityMap<Party>
{
public PartyMap()
{
HasManyToMany(x =>x.ParentAccountabilities).Access.CamelCaseField(Prefix.Underscore).LazyLoad();
HasManyToMany(x =>x.ChildAccountabilities).Access.CamelCaseField(Prefix.Underscore).LazyLoad();
}
}
public class PeopleGroupMap : SubclassMap<PeopleGroup>
{
public PeopleGroupMap()
{
Map(x => x.Name);
}
}
public class UserMap : SubclassMap<User>
{
public UserLoginInfoMap()
{
Map(x => x.LoginName);
Map(x => x.Password);
blah blah blah
}
}
public class AccountabilityMap : DomainEntityMap<Accountability>
{
public AccountabilityMap()
{
References(x => x.Parent);
References(x => x.Child);
References(x => x.AccountabilityType);
}
}
public class AccountabilityTypeMap : DomainEntityMap<AccountabilityType>
{
public AccountabilityTypeMap()
{
Map(x => x.Name);
}
}
DomaineEntityMap只是一个DomainEntity的地图,所有实体都从该地图继承,并且有一些基本的东西,如创建日期修改日期等。
THX
答案 0 :(得分:2)
问责制的代码会有所帮助,但我猜它有一个懒惰的派对参考。然后,NH创建从派对派生的代理来表示延迟加载的派对实例。可能的解决方案