具有两个主键时的FluentNhibernate映射

时间:2015-05-31 18:12:45

标签: c# mysql fluent-nhibernate fluent-nhibernate-mapping

我使用Fluent Nhibernate作为我的C#应用​​程序,我有一个非常基本的问题。 我想知道当我们有多个主键时,NHibernate映射类应该是什么样子。

这是一个示例,展示了我如何实现映射和其他模型类:

CREATE TABLE Students(
   id   INT              NOT NULL,
   name VARCHAR (20)     NOT NULL,
   age  INT              NOT NULL,       
   PRIMARY KEY (id)
);
public class Students
{
   public virtual int      ID   { get; set; }
   public virtual string   Name { get; set; }
   public virtual int      Age  { get; set; }
}


public class StudentMap : ClassMap<Students>
{
    public AchivementMasterMap()
    {
       Id(x => x.ID).Column("id");
       Map(x => x.Name).Column("name");
       Map(x => x.Age).Column("age");
       Table("Students");
     }
}

假设我们在Student表上有两个主键,如此

CREATE TABLE Students(
       id   INT              NOT NULL,
       name VARCHAR (20)     NOT NULL,
       age  INT              NOT NULL,       
       PRIMARY KEY (id,name)
);

那么如何为上表编写映射类?

1 个答案:

答案 0 :(得分:1)

您没有2个主键,您似乎拥有复合主键。我想你可以使用Fluent NHibernate CompositeId - 就像这样:

public class StudentMap : ClassMap<Students>
{
    public StudentMap()
    {
            CompositeId()
                .KeyProperty(x => x.name, "id")
                .KeyProperty(x => x.name, "name");

            ...