poco가 정의 된 어셈블리를 기반으로 테이블 이름 앞에 접두사를 붙일 NHibernate의 명명 전략을 작성하려고합니다. 지금 당장의 전략은 테이블에 모든 접두어를 추가하여 유선을 증명하는 것입니다 오른쪽.INaming (Fluent) NHibernate에서 전략을 무시하고 있습니까?
내가 겪고있는 문제는 내 INamingStrategy를 만들고 NHibernate 구성 객체에 연결할 수 있지만 결코 사용되지 않는 것입니다. 여기에 코드 몇 가지 예입니다
private MsSqlConfiguration GetDatabaseConfiguration()
{
var configuration = MsSqlConfiguration.MsSql2008
.ConnectionString(ConfigFileReader.GetConnectionString(ConnectionStringKey))
.ShowSql();
return configuration;
}
private FluentConfiguration GetFluentConfiguration()
{
return Fluently.Configure().Database(GetDatabaseConfiguration())
.Mappings(m =>
{
foreach (var assembly in GetAssembliesToLoadMappingsFrom())
m.FluentMappings.AddFromAssembly(assembly);
});
}
public global::NHibernate.Cfg.Configuration GetNHibernateConfiguration()
{
var nHibernateConfiguration = GetFluentConfiguration().BuildConfiguration();
var namingStrategy = GetNamingStrategy();
if (namingStrategy != null)
nHibernateConfiguration.SetNamingStrategy(namingStrategy);
return nHibernateConfiguration;
}
public void Build()
{
var schemaExport = new SchemaExport(GetNHibernateConfiguration());
schemaExport.Create(true, true);
}
GetNHibernateConfiguration()에서 return 문에 중단 점을 배치함으로써, 나는이 nHibernateConfiguration.NamingStrategy 내 전략에 대한 참조가 포함되어 있는지 확인 할 수 있어요. 그러나 해당 전략의 구현 멤버 인 INamingStrategy 모두에 중단 점을 배치하면 그 중 일부는 호출되지 않습니다. 이것은 접두어가없는 생성 된 스키마를보고 확인됩니다.
같은 방법으로 세션 팩토리를 만드는 방법은 CRUD 작업에서도 전략을 무시한다는 것을 보여줍니다.
내가 뭘 분명히 놓치고 있습니까? 내가 NHibernate에 2.1.1.4000
isuruceanu, 죄송합니다. 이 문제는 지금 당장 나를위한 배경 스레드 중 하나입니다. 필자는 자동 모델 생성을 사용하지 않기 때문에 솔루션이 정확하게 목표에 있지 않았습니다. 그러나 AutoPersistenceModel을 기본 PersistenceModel 및 관련 조정과 함께 사용하여 작업을 수행했습니다. 나를 올바른 방향으로 가리켜 주셔서 감사합니다. –