假设我有两个与一对二相关的类:
public class Customer
{
public virtual Guid Id {get; set;}
public virtual string Name {get; set;}
public virtual IList<Order> Orders {get; set;}
}
public class Orders
{
public virtual Guid Id {get; set;}
public virtual string Name {get; set;}
// public virtual Customer Customer {get; set;}`
}
而且我不希望Orders类中记录的Customer对象存在-但这意味着我无法使用References方法进行映射References(x => x.Customer)。
在映射客户对象时,我仅使用了HasMany(x => x.Orders)方法。当我创建表并插入数据时, nhibernate(Customer_id)在订单表中创建的外键列为NULL。
是否可以在不将Customer属性添加到Orders对象的情况下做到这一点?
答案 0 :(得分:0)
不确定真正原因:
...我不想在订单中记录客户对象...
最可能的是将其隐藏在上层,从业务领域的角度隐藏。
在这种情况下,我们仍然应该受益于ORM的本机行为,该行为由引用映射驱动。即我们应该在POCO级别上保留此类引用,将其保持映射状态,但将其隐藏起来以作其他用途。怎么样?例如。具有protected
访问权限
//public virtual Customer Customer {get; set;}
protected virtual Customer Customer {get; set;}
那还是可以映射的,我们仍然可以从NH本机功能中受益。.但是上层将无法从Order中访问Customer ...