C# Fluent NHibernate自动映射为1个关系生成2个外键
我有这样的设置(为了简洁起见进行了压缩)C# Fluent NHibernate自动映射为1个关系生成2个外键,c#,fluent-nhibernate,automapping,C#,Fluent Nhibernate,Automapping,我有这样的设置(为了简洁起见进行了压缩) Class员工 虚拟IList已初始化{get;private set;} 类ChecklistItem 虚拟员工由{get;set;}初始化 当生成这些表时,我会得到这些表 Employee Id ChecklistItem Id InitialedBy_id <---- Employee_id <---- 员工 身份证件 清单项目 身份证件 由_id映射初始化 .HasMany(x=>x.hassin
Class员工
虚拟IList已初始化{get;private set;}
类ChecklistItem
虚拟员工由{get;set;}初始化
当生成这些表时,我会得到这些表
Employee
Id
ChecklistItem
Id
InitialedBy_id <----
Employee_id <----
员工
身份证件
清单项目
身份证件
由_id映射初始化
.HasMany(x=>x.hassinitialed)
.KeyColumn(“由_id初始化”)
如果这是正确的,是否有一种方法可以根据ChecklistItem的属性名(lambda)选择KeyColumn?作为所有Hasmanie的约定
class HasManyConvention : IHasManyConvention
{
public void Apply(IOneToManyCollectionInstance instance)
{
instance.Key.Column(((ICollectionInspector)instance).Name + "_id");
}
}
或者只是为了这个
class HasManyConvention : IHasManyConvention, IHasManyConventionAcceptance
{
public void Accept(IAcceptanceCriteria<IOneToManyCollectionInspector> criteria)
{
criteria.Expect(x => x.Name == "HasInitialed"); // and/or entity type
}
public void Apply(IOneToManyCollectionInstance instance)
{
instance.Key.Column(((ICollectionInspector)instance).Name + "_id");
}
}
这会将Employee_id更改为hassinitialed_id,但它仍会生成另一个密钥。我可以在此处访问关系的“多”端吗?
class HasManyConvention : IHasManyConvention
{
public void Apply(IOneToManyCollectionInstance instance)
{
instance.Key.Column(((ICollectionInspector)instance).Name + "_id");
}
}
class HasManyConvention : IHasManyConvention, IHasManyConventionAcceptance
{
public void Accept(IAcceptanceCriteria<IOneToManyCollectionInspector> criteria)
{
criteria.Expect(x => x.Name == "HasInitialed"); // and/or entity type
}
public void Apply(IOneToManyCollectionInstance instance)
{
instance.Key.Column(((ICollectionInspector)instance).Name + "_id");
}
}
class ReferenceConvention : IReferenceConvention
{
public void Apply(IManyToOneInstance instance)
{
instance.Column(instance.Name + "_id");
}
}