有两个主键时的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)
);
那么如何为上面的表编写映射类呢?
您没有两个主键,您似乎有一个复合主键。我认为你可以使用Fluent NHibernate CompositeId——像这样:
public class StudentMap : ClassMap<Students>
{
public StudentMap()
{
CompositeId()
.KeyProperty(x => x.name, "id")
.KeyProperty(x => x.name, "name");
...