有两个主键时的FluentNhibernate映射

本文关键字:FluentNhibernate 映射 两个 | 更新日期: 2023-09-27 17:51:14

我在c#应用程序中使用了Fluent Nhibernate,我有一个非常基本的问题。我想知道当我们有多个主键时,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)
);
那么如何为上面的表编写映射类呢?

有两个主键时的FluentNhibernate映射

您没有两个主键,您似乎有一个复合主键。我认为你可以使用Fluent NHibernate CompositeId——像这样:

public class StudentMap : ClassMap<Students>
{
    public StudentMap()
    {
            CompositeId()
                .KeyProperty(x => x.name, "id")
                .KeyProperty(x => x.name, "name");
            ...
相关文章:
  • 没有找到相关文章