流畅的无引用一对多映射

时间:2018-10-04 20:56:55

标签: c# .net nhibernate fluent-nhibernate fluent-nhibernate-mapping

假设我有两个与一对二相关的类:

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对象的情况下做到这一点?

1 个答案:

答案 0 :(得分:0)

不确定真正原因:

  

...我不想在订单中记录客户对象...

最可能的是将其隐藏在上层,从业务领域的角度隐藏。

在这种情况下,我们仍然应该受益于ORM的本机行为,该行为由引用映射驱动。即我们应该在POCO级别上保留此类引用,将其保持映射状态,但将其隐藏起来以作其他用途。怎么样?例如。具有protected访问权限

//public  virtual Customer Customer {get; set;}
protected virtual Customer Customer {get; set;}

那还是可以映射的,我们仍然可以从NH本机功能中受益。.但是上层将无法从Order中访问Customer ...