NHibernate 在一对多关系中创建 2 个字段
NHibernate creates 2 fields in one-to-many relationship
我有以下实体,由代码映射:
VarRecipeMapping.cs
public VarRecipeMapping()
{
Table("var_recipe");
// ...
Bag(x => x.Entries, m =>
{
m.Cascade(Cascade.All | Cascade.DeleteOrphans);
m.Lazy(CollectionLazy.NoLazy);
},
a => a.OneToMany());
}
VarRecipeEntryMapping.cs
public VarRecipeEntryMapping()
{
Table("var_recipe_entry");
// ...
ManyToOne(x => x.Recipe, m =>
{
m.Column("var_recipe_id");
m.NotNullable(true);
});
}
令我烦恼的是生成的数据库 (SQLite):它包含由 Column
定义的我的实体的所有列以及 var_recipe_entry
table.
显然是由 NHibernate 生成的,因为模型中有一个名为 Recipe
的字段。
我该怎么做才能摆脱这个无用的字段?
找到了。
我也必须在 "one-to-many" 端指定自定义名称。
VarRecipeMapping.cs
public VarRecipeMapping()
{
Table("var_recipe");
// ...
Bag(x => x.Entries, m =>
{
// The custom name needs to be specified here too
m.Key(n => {
n.Column("var_recipe_id");
});
m.Cascade(Cascade.All | Cascade.DeleteOrphans);
m.Lazy(CollectionLazy.NoLazy);
},
a => a.OneToMany());
}
VarRecipeEntryMapping.cs
public VarRecipeEntryMapping()
{
Table("var_recipe_entry");
// ...
ManyToOne(x => x.Recipe, m =>
{
m.Column("var_recipe_id");
m.NotNullable(true);
});
}
我有以下实体,由代码映射:
VarRecipeMapping.cs
public VarRecipeMapping()
{
Table("var_recipe");
// ...
Bag(x => x.Entries, m =>
{
m.Cascade(Cascade.All | Cascade.DeleteOrphans);
m.Lazy(CollectionLazy.NoLazy);
},
a => a.OneToMany());
}
VarRecipeEntryMapping.cs
public VarRecipeEntryMapping()
{
Table("var_recipe_entry");
// ...
ManyToOne(x => x.Recipe, m =>
{
m.Column("var_recipe_id");
m.NotNullable(true);
});
}
令我烦恼的是生成的数据库 (SQLite):它包含由 Column
定义的我的实体的所有列以及 var_recipe_entry
table.
显然是由 NHibernate 生成的,因为模型中有一个名为 Recipe
的字段。
我该怎么做才能摆脱这个无用的字段?
找到了。
我也必须在 "one-to-many" 端指定自定义名称。
VarRecipeMapping.cs
public VarRecipeMapping()
{
Table("var_recipe");
// ...
Bag(x => x.Entries, m =>
{
// The custom name needs to be specified here too
m.Key(n => {
n.Column("var_recipe_id");
});
m.Cascade(Cascade.All | Cascade.DeleteOrphans);
m.Lazy(CollectionLazy.NoLazy);
},
a => a.OneToMany());
}
VarRecipeEntryMapping.cs
public VarRecipeEntryMapping()
{
Table("var_recipe_entry");
// ...
ManyToOne(x => x.Recipe, m =>
{
m.Column("var_recipe_id");
m.NotNullable(true);
});
}