мне интересно, если можно найти время выполнения имя в колонки для класса/компонента, который был отображен с FluentNHibernate после всех конвенций были применяется.FluentNHibernate: Получение столбцов и имена таблиц После Mapping конвенции применяются
Например, учитывая простую модель:
public class Address{
public string Street {get; set;}
public string Zip {get; set;}
}
public class AddressMap : ComponentMap<Address>{
Map(x => x.Street);
Map(x => x.Zip);
}
public class PersonMap : ClassMap<Person>
{
public PersonMap(){
Id(x => x.Id);
Map(x=> x.Ssn);
Map(x=> x.Name);
Component(x => x.Address)
.ColumnPrefix("ADDRESS_");
}
}
public class ClassConvention : IClassConvention
{
public void Apply(IClassInstance instance)
{
instance.Table("tbl" + instance.EntityType.Name);
}
}
Название таблицы:tblPerson
Id Name Ssn ADDRESS_Street ADDRESS_Zip
-----------------------------------------------------------
1 Brian 11223344 123 Example St. 12345
Что я ищу и что я не знаю, как do является следующим:
var mappings = FluentNHibaernate.CompileMergeAndBuildAllMappings();
var zipCodeColumnName = mappings.FindMappedType<Address>().ColumnName(a => a.Zip)
zipCodeColumnName.ShouldBe("ADDRESS_Zip");
// Here I'm interested in the run-time & final column name with the
// prefix applied from the PersonMap class.
var personTableName = mappings.FindMappedType<Person>().TableName;
personTableName.ShouldBe("tblPerson");
// I'm interested in the final table name after the ClassConvention
// modified the table name.
Дополнительная Разъяснение
- Я заинтересован только в результате из применения FluentNHiberante «s конвенций и отображений. Не в реальном SQL, который генерируется NHibernate.
Спасибо за помощь,
Brian
Угу. Это была правильная идея. Я дал вам ответ, и я добавил свой класс «RuntimeNames» ниже вашего ответа. Благодаря! –