NHibernate配置问题
任何人都可以帮助我吗?我的目标是始终使用相同的数据库。对我来说,它会覆盖我的所有数据。我收到此错误:创建 SessionFactory 时使用了无效或不完整的配置。检查 PotentialReasons 集合和 InnerException 了解更多详细信息。
我的代码如下所示:
使用 FluentNHibernate;使用 NHibernate;使用 FluentNHibernate.Cfg;使用 FluentNHibernate.Cfg.Db;使用 FluentNHibernate.Automapping;使用 NHibernate.Cfg;使用 NHibernate.Tool.hbm2ddl;使用 NHibernate.Criterion;使用 FluentNhibernate测试;使用 FluentNHibernate.Mapping;使用 MMAdminPfyn.MappingFiles;
命名空间 FluentNhibernateTest { 公共密封类 FluentNHibernateHelper { 私有静态ISessionFactory sessionFactory;
public static ISessionFactory GetInstance() { if (sessionFactory == null) { sessionFactory = BuildSessionFactory(); } 返回会话工厂; } 私有静态 ISessionFactory BuildSessionFactory() { 返回 Fluently.Configure() .数据库(PostgreSQL配置.PostgreSQL82 .ConnectionString(c => c .主机(“本地主机”) .端口(5432) .数据库(“blablabla”) .用户名(“blablabla”) .密码(“blablabla”))) .Mappings(m => m.FluentMappings .AddFromAssemblyOf
() .AddFromAssemblyOf () .AddFromAssemblyOf () .AddFromAssemblyOf () .AddFromAssemblyOf () .AddFromAssemblyOf () ) .ExposeConfiguration(构建架构) .BuildSessionFactory(); } 私有静态无效BuildSchema(配置config) { 新的 SchemaExport(config).Create(true, 真); } } }
Can anybody help me. My aim is, to use always the same database. By me it overrides all my data. I get this error: An invalid or incomplete configuration was used while creating a SessionFactory. Check PotentialReasons collection, and InnerException for more detail.
My Code look like:
using FluentNHibernate; using
NHibernate; using
FluentNHibernate.Cfg; using
FluentNHibernate.Cfg.Db; using
FluentNHibernate.Automapping; using
NHibernate.Cfg; using
NHibernate.Tool.hbm2ddl; using
NHibernate.Criterion; using
FluentNhibernateTest; using
FluentNHibernate.Mapping; using
MMAdminPfyn.MappingFiles;namespace FluentNhibernateTest {
public sealed class 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);
}
} }
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
下面的内容看起来很奇怪:
这些映射(AddressMap、PersonMap 等)都存在于不同的 dll 中吗?如果没有,您只需要这些语句之一,它就会在该程序集中找到您的所有映射。所以你只需要以下内容:
The following looks odd:
Do those mappings (AddressMap, PersonMap, etc) all exist in different dlls? If they don't you only need one of those statements and it will find all of your mappings in that assembly. So you would only need the following:
这个问题与此有关:
引用自 https://github.com/jagregory/ fluent-nhibernate/wiki/Fluent-configuration,
这意味着您正在提供包含类的程序集;你在这里所做的相当于告诉 Fluent,“映射包含此类的程序集”。
试试这个吧。
This problem is with this bit:
Quoted from https://github.com/jagregory/fluent-nhibernate/wiki/Fluent-configuration,
which means that you are giving the assembly which contains the classes; what you're doing here is equal to telling Fluent, "Map the assembly which contains this class."
Try this instead.