Nếu bạn đã tắt tự động nhập trong ánh xạ (<hibernate-mapping auto-import="false">
), thì bạn sẽ phải sử dụng tên lớp đủ điều kiện ở mọi nơi trong truy vấn của bạn, tên lớp không đủ tiêu chuẩn sẽ không hoạt động.
Nếu không, cho phép tự động nhập khẩu.
Conventions.Setup(x =>
{
x.Add(FluentNHibernate.Conventions.Helpers.AutoImport.Always()); // AutoImport.Never
}); // End FluentMappings.Conventions.Setup
Như thế này:
/*
var model = AutoMap.AssemblyOf<MyDb>()
.Where(t => t.Namespace.StartsWith("MyDb.Tables"))
.Conventions.AddFromAssemblyOf<MyDb>();
*/
protected static AutoPersistenceModel CreateMappings()
{
//return new AutoPersistenceModel().AddMappingsFromAssemblyOf<MyDB.Tables.T_Admin>();
return new AutoPersistenceModel().AddMappingsFromAssemblyOf<MyDb.Tables.T_Admin>()
.Where(t => t.Namespace == "MyDb.Tables");
}
private static ISessionFactory CreateMsSqlSessionFactory()
{
//AutoPersistenceModel model = CreateAutoMappings();
AutoPersistenceModel model = CreateMappings();
return Fluently.Configure()
.Database(MsSqlConfiguration.MsSql2005
.ConnectionString(c => c
//.Server("MYCOMPUTER\\SQLEXPRESS")
.Server("localhost")
//.Database("testdb")
.Database("nhDMS")
.Username("TableCreatorWebServices")
.Password(DB.Tools.Cryptography.AES.DeCrypt("AES_ENCRYPTED_PW"))))
//.Mappings(m => m.FluentMappings.AddFromAssemblyOf<SsoToken>())
.Mappings(m =>
{
m.AutoMappings.Add(model);
m.FluentMappings.Conventions.Setup(x =>
{
//x.AddFromAssemblyOf<MyDb.Tables.T_Admin>();
x.Add(FluentNHibernate.Conventions.Helpers.AutoImport.Always()); // AutoImport.Never
}); // End FluentMappings.Conventions.Setup
}
) // End Mappings
.ExposeConfiguration(BuildSchema) // BuildSchema function call...
.BuildSessionFactory();
} // End Function CreateMsSqlSessionFactory
Nguồn
2012-08-13 10:53:07
Liệu nó có tác dụng nếu bạn sử dụng tên đầy đủ của thực thể bên trong HQL? –
Bạn chỉ tìm thấy điều này. Tôi đang sử dụng tự động nhập sai trong conifg của tôi (vì có một số thực thể, trong các không gian tên khác nhau, với cùng tên lớp) và vì điều này trong HQL, tên đầy đủ của lớp phải được sử dụng. Hy vọng điều này sẽ giúp người khác quá :) – johnnyboy
Bạn có thể muốn đăng bài này dưới dạng câu trả lời. –