NHibernate:基于鉴别器映射不同的动态组件

时间:2010-04-15 20:19:52

标签: nhibernate

我的域实体每个都有一组“固定”属性和一组可以在运行时添加的“动态”属性。我通过使用NHibernate的动态组件功能来处理这个问题。

public class Product {
  public virtual Guid Id { get; }
  public virtual string Name { get; set;}
  public virtual IDictionary DynamicComponents { get; }
}

现在我有以下情况

public class Customer {
  public virtual Guid Id { get; }
  public virtual string Type { get; set;}
  public virtual IDictionary DynamicProperties { get; }
}

如果CustomerType类似于“在线”“InPerson”。此外,在线客户具有动态属性“名称”“IPAddress”,而InPerson客户具有动态属性“名称”“推销员“即可。

哪些客户类型可用,并且它们的额外属性在元数据中配置,元数据用于在应用程序启动时生成hbm文件。

我可以找到一些方法来使用中间DTO层将它们组合在一起,但是在这种情况下NHibernate是否有任何支持?唯一的困难似乎是客户的所有不同“类型”都映射到同一个Customer类。

2 个答案:

答案 0 :(得分:0)

也许是一个愚蠢的问题,但为什么不只使用Customer的两个子类?

除此之外,我不清楚你想要NHibernate支持什么。你能澄清一下“NHibernate在这种情况下的任何支持”是什么意思,你想让NHibernate为你做什么?

答案 1 :(得分:0)

我认为你可以在子类中找到使用动态属性的解决方案,参考动态属性,例如IPAddress { get { return DynamicProperties["ipAddress"] as IPAddress; } }

对我而言,有趣的部分是如何以可扩展的方式映射这些属性......

你有没有想出一个不同的解决方案?