2011-12-22 178 views
0

我'新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 ..

+0

员工与孩子之间的关系与店铺与员工之间的关系无关。也就是说,将员工与孩子联系起来的机制,反之亦然。 到目前为止您尝试过哪些功能失败? – 2011-12-22 13:24:26

+0

感谢您的回应 - 我正在尝试使用Persistent规范示例测试Maping .in伪代码iam正在执行类似如下操作: – Nikos 2011-12-22 13:46:10

+0

请更新您的原始帖子,而不是将代码输入注释。 – 2011-12-22 13:54:52

回答

0

OK,使其干活提供一些细节的人遇到相同的任务:

1)为EmployeeMap的范围内的孩子应该 的hasMany的映射(X => X .Child).Cascade.AllDeleteOrphan(); (WITHOUT逆)

2)在子表允许FOREIGNKEY字段NULLS这样一个子对象的该缺失是可行

3)第一保存存储对象,将节省附加到它的雇员,然后将子对象添加到员工列表中

4)创建一个保存Empolyee实例的单独方法,类似于保存Store实例的方法,该方法将保存添加到Employee对象的Child对象列表中的所有Child对象。