FluentNHibernate这个id不保存
本文关键字:保存 id 这个 FluentNHibernate | 更新日期: 2023-09-27 18:09:08
我现在开始学习FluentNHibernate,但发现很大的困难。这些是我的对象:
public class Region
{
public virtual Int64 Id { get; set; }
public virtual string Name { get; set; }
public virtual IList<City> ListCity { get; set; }
public Region()
{
ListCity = new List<City>();
}
}
public class City
{
public virtual Int64 Id { get; set; }
public virtual string Name { get; set; }
}
映射如下:
public class RegionMap : ClassMap<Region>
{
public RegionMap()
{
Table("tbRegion");
Id(x => x.Id)
.Column("Num_ID");
Map(x => x.Name)
.Column("Des_Name")
.Not.Nullable();
HasMany<City>(x => x.ListCity)
.Inverse()
.Cascade.SaveUpdate()
.AsBag();
}
}
public class CityMap : ClassMap<City>
{
public CityMap()
{
Table("tbCity");
Id(x => x.Id)
.Column("Num_ID");
Map(x => x.Name)
.Column("Des_City")
.Not.Nullable();
}
}
到目前为止我认为还好。我曾经使用Hibernate来生成数据库测试映射的简单代码:
List<City> lcity = new List<City>();
lcity.Add(new City()
{
Name = "Belo-Horizonte"
});
Region region = new Region()
{
ListCity = lcity,
Name = "Minas Gerais"
};
Repository.Connect(s => s.Save(region));
看我的结果
Num_ID Des_Name
1米纳斯吉拉斯州
Num_ID Des_City Region_id
0
为什么没有填写REGION_ID??
谢谢!
你必须教它如何处理REGION_ID
-你的映射没有说明它。
不确定我得到的想法是什么-但看起来像它是一个区域外键在城市表,所以最有可能你需要使用这样的东西RegionMap
:
HasMany<City>(x => x.ListCity)
// Provide column key to reference by
.KeyColumnNames.Add("REGION_ID")
.Inverse()
.Cascade.SaveUpdate()
.AsBag();