【问题标题】:fluent nhibernate one-to-many mapping without References method流畅的nhibernate一对多映射没有参考方法
【发布时间】:2018-10-04 20:56:55
【问题描述】:

假设我有两个通过一对多关联的类:

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

【问题讨论】:

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


【解决方案1】:

不确定真正的原因:

...我不想要 Orders 中记录的 Customer 对象...

最有可能的是从上层隐藏它,从业务领域的角度隐藏。

在这种情况下,我们仍然应该受益于由引用映射驱动的 ORM 的原生行为。 IE。我们应该将此类参考保留在 POCO 级别,保持映射,但将其隐藏以供任何其他用途。如何?例如。使用protected 访问

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

这仍然可以被映射,我们仍然会从 NH 原生功能中受益..但上层将无法从 Order 访问 Customer...

【讨论】:

  • 很高兴它有帮助
猜你喜欢
  • 2015-07-12
  • 1970-01-01
  • 2016-01-17
  • 2023-03-14
  • 1970-01-01
  • 2012-07-16
  • 2010-11-22
  • 2011-08-30
  • 1970-01-01
相关资源
最近更新 更多