У меня есть следующая версия IIdConvention для автомагнитола FluentNHibernate. Я хочу, чтобы все мои свойства id использовали пользовательский тип, который представлен строковым свойством, но CustomType никогда не применяется к моим сопоставлениям.Fluent NHibernate - настройка CutomType IIdConvention
public class PrimaryKeyHasTableName : FluentNHibernate.Conventions.IIdConvention
{
public void Apply(FluentNHibernate.Conventions.Instances.IIdentityInstance instance)
{
instance.Column(instance.EntityType.Name + "Id");
instance.CustomType<CustomIdType>();
}
}
Когда я посмотрел на источник FluentNHibernate представляется, что тип для свойства идентификатора уже установлен поэтому он не установлен на моей конвенции.
Если я использую ClassMap для сопоставления класса вручную, у меня нет проблем с настройкой CustomType для свойства Identity.
Id(x => x.Id)
.Column("UserId")
.CustomType<OnFileIdType>();
Кто-нибудь знает, как я могу успешно установить пользовательское свойство id, используя соглашение?
Или получите мое соглашение для запуска ранее в процессе сопоставления, чтобы тип еще не был установлен к моменту моего кода.
Кроме того, вот мой код конфигурации:
Fluently.Configure()
.Database(MsSqlConfiguration.MsSql2005.ConnectionString(connString))
.Mappings(m =>
{
m.FluentMappings.AddFromAssemblyOf<BaseEntity>();
m.AutoMappings.Add(AutoMap.AssemblyOf<BaseEntity>()
.Where(t => t.Namespace.EndsWith("Models.Domain"))
.Conventions.AddFromAssemblyOf<BaseEntity>()
.UseOverridesFromAssemblyOf<BaseEntity>()
);
})
.ExposeConfiguration(CreateSchema)
.BuildSessionFactory();
Спасибо.
я получил эту работу, используя FluentMappings и базовый объект, но не может получить AutoMappings, чтобы принять CustomType даже при создании переопределения для каждого отдельного класса. –
Смешивание FluentMapping с Automapping иногда может привести к проблемам. Когда Automapper должен ссылаться на специальные типы или имена столбцов из явно отображаемых объектов. Почему вы не позволили автопарку отобразить ваш базовый объект? вы пытались использовать IgnoreBase? – Variant