如何从实体类型确定一对多列名称

时间:2010-04-21 18:13:07

标签: .net nhibernate fluent-nhibernate

我需要一种方法来确定NHibernate用来从收集的实体类型中加入一对多集合的列的名称。

我需要能够在运行时确定这一点。

这是一个例子:我有一些实体:

namespace Entities
{
    public class Stable {
        public virtual int Id {get; set;}
        public virtual string StableName {get; set;}
        public virtual IList<Pony> Ponies { get; set; }
    }

    public class Dude {
        public virtual int Id { get; set; }
        public virtual string DudesName { get; set; }
        public virtual IList<Pony> PoniesThatBelongToDude { get; set; }
    }

    public class Pony {
        public virtual int Id {get; set;}
        public virtual string Name {get; set;}
        public virtual string Color { get; set; }
    }
}

我正在使用NHibernate生成数据库模式,如下所示:

create table "Stable" (Id  integer, StableName TEXT, primary key (Id))
create table "Dude" (Id  integer, DudesName TEXT, primary key (Id))
create table "Pony" (Id  integer, Name TEXT, Color TEXT, Stable_id INTEGER, Dude_id INTEGER, primary key (Id))

鉴于我的代码中有Pony个实体,我需要能够找到:

  • 甲。 Pony是否甚至属于映射中的集合?
  • B中。如果是,那么数据库表中与集合
  • 相关的列名是什么

在上面的例子中,我希望Pony有两个收集列,Stable_idDude_id

1 个答案:

答案 0 :(得分:0)

由于Pony是使用Stable_id和Dude_id创建的,我假设你在hbm-xml中有适当的映射。

您还可以在Pony for Stable和Dude中添加实体,以进一步澄清这种关系。