多个一对多关系映射
问题描述:
我'新NHibernate和我有个任务,加强项目与existinig implementation.The目前的设计是直线前进,如“第一个项目”:多个一对多关系映射
store(1)->(many)Employee
现在我想这样做:
store(1)->(many)Employee AND
Empoyee(1)->(many)Child
重新实现从商店员工的映射逻辑员工,儿童不能正常工作。 试图找到在网上类似的东西enter code here
但没有运气。 任何关于映射的提示非常感谢。
感谢
@MeckLey:非常感谢 为响应 - 我想使用持久性规范examples..in伪IAM做类似测试映射:
new PersistenceSpecification<Child>(_session, new CustomEqualityComparerChild())
.CheckProperty(c => c.Name, "Child1Name")
--other Child prperties--
.CheckReference(c => c.Employee, new Employee{
Store = new Store{--store properties--},
--other Employee Properties--
});
外交键不应该有空的列被插入空值。我尽量使测试,以便按照正确的顺序是创造了一切:
Store->Employee->Child
..但我不
@Meckley好吧,这里是真实的东西..“存储”是“ReturnOrder” “雇员”是“ReturnOrderLineItem”和“子女学费”是“ReturnOrderReplacementItem” 的类遵循“FirstExample”和映射的具体结构如下:
public ReturnOrderMap()
{
Id(x => x.Id);
Map(x => x.OrderTrackingNumber);
Map(x => x.UserId);
HasMany(x => x.ReturnOrderLineItems).Inverse().Cascade.AllDeleteOrphan();
}
public ReturnOrderLineItemMap()
{
Id(x => x.Id);
Map(x => x.Sku);
Map(x => x.Status);
Map(x => x.Comments);
HasMany(x => x.ReturnOrderReplacementItems).Inverse().Cascade.AllDeleteOrphan();
References(x => x.ReturnOrder);
}
public ReturnOrderReplacementItemMap()
{
Id(x => x.Id);
Map(x => x.Quantity);
Map(x => x.Size);
References(x => x.ReturnOrderLineItem);
}
我会跳过映射测试和试看看它是否真的有效,也许你不能测试一些东西像这样与PesristenceSpecification ..
答
OK,使其干活提供一些细节的人遇到相同的任务:
1)为EmployeeMap的范围内的孩子应该 的hasMany的映射(X => X .Child).Cascade.AllDeleteOrphan(); (WITHOUT逆)
2)在子表允许FOREIGNKEY字段NULLS这样一个子对象的该缺失是可行
3)第一保存存储对象,将节省附加到它的雇员,然后将子对象添加到员工列表中
4)创建一个保存Empolyee实例的单独方法,类似于保存Store实例的方法,该方法将保存添加到Employee对象的Child对象列表中的所有Child对象。
员工与孩子之间的关系与店铺与员工之间的关系无关。也就是说,将员工与孩子联系起来的机制,反之亦然。 到目前为止您尝试过哪些功能失败? – 2011-12-22 13:24:26
感谢您的回应 - 我正在尝试使用Persistent规范示例测试Maping .in伪代码iam正在执行类似如下操作: – Nikos 2011-12-22 13:46:10
请更新您的原始帖子,而不是将代码输入注释。 – 2011-12-22 13:54:52