任何人都可以帮助我。我的目标是,始终使用相同的数据库。通过我,它覆盖了我的所有数据。我收到此错误:创建SessionFactory时使用了无效或不完整的配置。检查PotentialReasons集合,以及InnerException以获取更多详细信息。
我的代码如下:
使用FluentNHibernate;运用 NHibernate的;运用 FluentNHibernate.Cfg;运用 FluentNHibernate.Cfg.Db;运用 FluentNHibernate.Automapping;运用 NHibernate.Cfg;运用 NHibernate.Tool.hbm2ddl;运用 NHibernate.Criterion;运用 FluentNhibernateTest;运用 FluentNHibernate.Mapping;运用 MMAdminPfyn.MappingFiles;
namespace FluentNhibernateTest { 公共密封类FluentNHibernateHelper { private static ISessionFactory sessionFactory;
public static ISessionFactory GetInstance() { if (sessionFactory == null) { sessionFactory = BuildSessionFactory(); } return sessionFactory; } private static ISessionFactory BuildSessionFactory() { return Fluently.Configure() .Database(PostgreSQLConfiguration.PostgreSQL82 .ConnectionString(c => c .Host("localhost") .Port(5432) .Database("blablabla") .Username("blablabla") .Password("blablabla"))) .Mappings(m => m.FluentMappings .AddFromAssemblyOf<AdresseMap>() .AddFromAssemblyOf<PersonMap>() .AddFromAssemblyOf<InstitutionMap>() .AddFromAssemblyOf<LiteraturMap>() .AddFromAssemblyOf<KategorieMap>() .AddFromAssemblyOf<MediaDateiMap>() ) .ExposeConfiguration(BuildSchema) .BuildSessionFactory(); } private static void BuildSchema(Configuration config) { new SchemaExport(config).Create(true,
TRUE); } }}
答案 0 :(得分:0)
以下看起来很奇怪:
.Mappings(m => m.FluentMappings
.AddFromAssemblyOf<AdresseMap>()
.AddFromAssemblyOf<PersonMap>()
.AddFromAssemblyOf<InstitutionMap>()
.AddFromAssemblyOf<LiteraturMap>()
.AddFromAssemblyOf<KategorieMap>()
.AddFromAssemblyOf<MediaDateiMap>()
)
这些映射(AddressMap,PersonMap等)是否都存在于不同的dll中?如果它们不存在,您只需要其中一个语句,它将在该程序集中找到所有映射。所以你只需要以下内容:
return Fluently.Configure()
.Database(PostgreSQLConfiguration.PostgreSQL82
.ConnectionString(c => c
.Host("localhost")
.Port(5432)
.Database("blablabla")
.Username("blablabla")
.Password("blablabla")))
.Mappings(m => m.FluentMappings
.AddFromAssemblyOf<AdresseMap>()
)
.ExposeConfiguration(BuildSchema)
.BuildSessionFactory();
答案 1 :(得分:0)
这个问题就是这个问题:
.Mappings(m => m.FluentMappings
.AddFromAssemblyOf<AdresseMap>()
.AddFromAssemblyOf<PersonMap>()
.AddFromAssemblyOf<InstitutionMap>()
.AddFromAssemblyOf<LiteraturMap>()
.AddFromAssemblyOf<KategorieMap>()
.AddFromAssemblyOf<MediaDateiMap>()
)
引自https://github.com/jagregory/fluent-nhibernate/wiki/Fluent-configuration,
如果您处于申请专用的情况 流畅的映射,然后这是你的配置。
这意味着您要提供包含类的程序集;你在这里所做的就等于告诉Fluent,“映射包含这个类的程序集。”
var sessionFactory = Fluently.Configure()
.Database(SQLiteConfiguration.Standard.InMemory)
.Mappings(m =>
m.FluentMappings
.AddFromAssemblyOf<YourEntity>())
.BuildSessionFactory();
试试这个。
.Mappings(m => m.FluentMappings.AddFromAssemblyOf<AdresseMap>());