Я пытаюсь перейти на 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;}
}
Можно ли использовать какую-то функцию автоматического сопоставления, поскольку у меня есть дюжина этих классов, и, вероятно, их будет больше.
Я пробовал следующее:
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");
}
}
}
РЕДАКТИРОВАТЬ: Но мой 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).