нашел это:
это решение.
Персон
Автоматизм самоуверен, он ожидает, что ваши классы будут разработаны определенным образом; если это не так, то он не сможет автоматизировать их без небольшой помощи. Автопроизводитель ожидает, что ваши имена будут названы Id, и если они не будут найдены, он их не найдет.
Вы можете изменить способ обнаружения идентичности автоматом, переопределив метод IsId в вашей конфигурации автоматического отображения. Этот метод будет вызываться для всех участников в ваших организациях, которые уже были приняты критериями ShouldMap (Member); любой член, которому вы вернете значение true, будет отображен как личность.
public override bool IsId(Member member)
{
return member.Name == member.DeclaringType.Name + "Id";
}
Этот пример будет соответствовать любым идентификаторам, которые названы в честь их сущности, например CustomerId.
и назвав его:
return Fluently.Configure()
.MsSql2008
.ConnectionString(c => c.FromConnectionStringWithKey("database"))
.ShowSql()
.ProxyFactoryFactory("NHibernate.ByteCode.LinFu.ProxyFactoryFactory, NHibernate.ByteCode.LinFu"))
.Mappings(x => x.FluentMappings
.AddFromAssembly(
Assembly.GetExecutingAssembly())
.Conventions.AddFromAssemblyOf<Location.IdConvention>())
.BuildSessionFactory();
и после настройки идентификатора
public class IdConvention : IIdConvention
{
public void Apply(IIdentityInstance identityInstance)
{
identityInstance.Column(identityInstance.EntityType.Name + "Id");
}
}