【问题标题】:NHibernate ReferencesAny + Composite IdNHibernate ReferencesAny + Composite Id
【发布时间】:2013-12-19 07:40:30
【问题描述】:

我有一个映射类,它通过在映射中使用 ReferencesAny 的接口引用许多其他类。 只要其他类具有普通的单列主键,这就可以正常工作。 现在我需要通过同一个接口引用一个新类,它有一个组合的主键,由两列组成。

这可能吗?

Class1 映射:

public class Class1Map : ClassMap<Class1>
{
  public Class1Map()
  {
    Table("Class1");

    Id(x => x.Id, "Id").GeneratedBy.Native().UnsavedValue(0);
  }
}

引用类映射:

public class RefClassMap : ClassMap<RefClassMap>
{
  public RefClassMap()
  {
    Table("RefClass");

    Id(x => x.Id, "Id").GeneratedBy.Native().UnsavedValue(0);

    ReferencesAny(x => x.Reference)
      .AddMetaValue<Class1>("Class1")
      .EntityTypeColumn("RefType")
      .EntityIdentifierColumn("RefId")
      .EnittyType<int>()
      .Cascade.None();
  }
}

(RefClass.Reference 是 IInterface 类型,Class1 实现了 IInterface)

这很好用,但是如何添加 Class2 作为可能的参考。 (Class2也实现了IInterface)

Class2 映射如下所示:

public class Class2Map : ClassMap<Class2>
{
  public Class2Map()
  {
    Table("Class2");

    CompositeId()
      .KeyReference(x => x.KeyPart1, "KeyPart1")
      .KeyReference(x => x.KeyPart2, "KeyPart2")
      .Mapped();
  }
}

我不确定这是否可行,但也许可以通过将实体类型更改为字符串并对复合键进行某种映射?

有什么建议吗?

【问题讨论】:

标签: nhibernate interface fluent-nhibernate fluent-nhibernate-mapping composite-key


【解决方案1】:

缺乏答案和我自己的进一步研究表明这是不可能的。无论如何,我最终找到了解决方法。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-01-22
    • 1970-01-01
    • 2014-12-15
    • 1970-01-01
    • 1970-01-01
    • 2012-10-29
    相关资源
    最近更新 更多