Я пытаюсь перейти на Fluent NHibernate и столкнулся со следующей проблемой :(
У меня есть несколько классов, называемых по типу CompanyXXXXXX, все из которых имеют PrimaryKey "CompanyId" типа Company.
Файл отображения HBM, который я использовал до тех пор, пока имя не было таким:
<class name="CompanyAccounting" table="Company_Accounting" >
<id column="CompanyID" type="Int32">
<generator class="foreign">
<param name="property">Company</param>
</generator>
</id>
<one-to-one name="Company" constrained="true" />
</class>
Сущность следующая:
public class CompanyAccounting
{
public virtual Company Company {get;set;}
}
Можно ли использовать какую-то функцию AutoMapping, так как у меня есть дюжина этих классов и, вероятно, будет больше.
Я пробовал следующее:
public class CustomPrimaryKeyConvention : IIdConvention
{
public void Apply(IIdentityInstance instance)
{
var type = instance.EntityType;
if (type.Name.StartsWith("Company") && type.Name.Length > 7)
{
instance.CustomType(typeof(Company));
instance.Column("CompanyId");
}
else
{
instance.Column(instance.EntityType.Name + "Id");
}
}
}
EDIT: Но мой If(...)[для типа "CompanyAccounting"] даже не попадает. Какие-либо предложения?
Исключение:
The entity 'CompanyAccounting' doesn't have an Id mapped.
Use the Id method to map your identity property. For example: Id(x => x.Id).