我有兴趣听取别人的意见,看看他们会选择哪一个(没有'neithers' please;),以及为什么.
使用流利的缺点是什么?(版本依赖可能?)优点,缺点,经验等
我有一个应用程序,我使用Fluent Nhibernate来创建我的数据库.到目前为止,我每次都在重新创建数据库模式.执行此操作的代码是:
public NhibernateSessionFactory(IPersistenceConfigurer config)
{
_sessionFactory = Fluently.Configure().
Database(config).
Mappings(m => m.FluentMappings.AddFromAssemblyOf<MappingsPersistenceModel>()).
ExposeConfiguration(BuildSchema).
BuildSessionFactory();
}
private static void BuildSchema(Configuration config)
{
// if (DbExists(config))
// return;
new SchemaExport(config).Create(false, true);
}
Run Code Online (Sandbox Code Playgroud)
注意" if (DbExists(config))".这就是我想做的.我只想在它实际上不存在的情况下创建模式.在下一步 - 如果它不是最新的,我想更新它.
我该如何实现这一目标?我期待一个config.DatabaseExists(),但我看不到这样的事情.我看到了hacky解决方案的一些可能性,但是处理这个问题的典型推荐方法是什么?
我用Google搜索并环顾四周有没有人知道任何隐藏的宝石,这不是谷歌搜索的前几页....
我是NHibernate的新手,并尝试使用Fluent进行映射.我的实体类名称与必须映射到的数据库表名称不同.我使用来源于映射类ClassMap<>,但我不能指定表名:属性TableName从ClassMap是只读的.
谢谢你的帮助.
我正在尝试配置nHibernate以使用MySql数据库.我找到了mssql和sqlite的例子但没有找到mysql的例子.那么,我该如何更改它以便它使用mysql:
Fluently.Configure().Database(
MsSqlConfiguration.MsSql2005.ConnectionString(
c => c.FromConnectionStringWithKey("ConnectionString")
)
)
.Mappings(m => m.FluentMappings.AddFromAssemblyOf<MyAutofacModule>())
.BuildSessionFactory())
Run Code Online (Sandbox Code Playgroud) 我正在关注http://wiki.fluentnhibernate.org/Getting_started教程,用Fluent NHibernate创建我的第一个NHibernate项目
我有2张桌子
1)帐户与字段
Id
AccountHolderName
AccountTypeId
Run Code Online (Sandbox Code Playgroud)
2)带有字段的AccountType
Id
AccountTypeName
Run Code Online (Sandbox Code Playgroud)
现在,帐户类型可以是Savings或Current所以表AccountTypes存储2行1 - Savings 2 - Current
对于AccoutType表,我已经定义了枚举
public enum AccountType {
Savings=1,
Current=2
}
Run Code Online (Sandbox Code Playgroud)
对于Account表,我定义了实体类
public class Account {
public virtual int Id {get; private set;}
public virtual string AccountHolderName {get; set;}
public virtual string AccountType {get; set;}
}
Run Code Online (Sandbox Code Playgroud)
流畅的nhibernate映射是:
public AgencyMap() {
Id(o => o.Id);
Map(o => o.AccountHolderName);
Map(o => o.AccountType);
}
Run Code Online (Sandbox Code Playgroud)
当我尝试运行解决方案,它提供了一个异常 - 的InnerException = {"(XmlDocument的)(2,4):XML验证错误:元素'类’在命名空间'瓮:NHibernate的映射-2.2’具有不完整的内容.期望的可能元素列表:'命名空间'中的元,子选择,缓存,同步,注释,tuplizer,id,composite-id'...
我想那是因为我还没有为AccountType指定任何映射.
问题是:
谢谢!
我是NHibernate的新手,并且一直在尝试使用NuGet来启动和运行它,Fluent NHibernate和NHProf.阅读本文(http://gurustop.net/blog/2011/03/13/nhibernate-3-1-0-on-nuget-important-details)后,似乎不应该直接安装v3.1,但是,v3.2似乎没有这样的警告.
在使用NuGet成功安装NHibernate 3.2和NHProf之后,我无法安装Fluent NHibernate,因为它说"已经引用了更新版本的NHibernate".
此外,当我运行我的应用程序时,我收到以下错误"无法加载文件或程序集'NHibernate.ByteCode.Castle'或其依赖项之一".以下链接(无法在NHibernate中加载文件或程序集)建议安装一些额外的程序集,这是我希望首先使用NuGet避免的.
在这一点上,由于NuGet上的软件包看起来不兼容,因此按照NHForge上的步骤进行操作会更容易吗?
我正在尝试使用linq到NHibernate(使用Fluent NHibernate)但是我遇到了linq查询的问题.每次我尝试执行它时,我收到此消息:
" 方法'get_IsReadOnlyInitialized’型'NHibernate.Linq.Util.DetachedCriteriaAdapter’自组装'NHibernate.Linq,版本= 1.1.0.1001,文化=中立,公钥=空’没有实现. "
有人知道如何解决这个问题吗?我尝试使用模型上下文的这个页面的解决方案,但它没有帮助.
这是代码:
using(var session = NHibernateHelper.OpenSession())
{
var informations = (from i in session<Information>() where i.Text=="some text" select i).ToList();
}
Run Code Online (Sandbox Code Playgroud)
一切都很好,如果我不使用where部分,但如果我使用它我得到这个错误.我认为问题出在NHibernate.Linq.dll中
我来自ORM工具的实体框架和LLBL背景.
我被要求建立一个基于NHibernate的新系统.我从来没有这样做过,所以我带着新鲜的眼睛来看它.
使用Fluent NHibernate进行映射和NHibernate中的"按代码映射"有什么区别?有偏好吗?
nhibernate nhibernate-mapping fluent-nhibernate fluent-nhibernate-mapping
是否有适用于Fluent NHibernate的类映射生成器?我需要像db2hbm这样的东西,但我希望它能生成Fluent Class Maps而不是xml映射.
我知道AutoMapping for Fluent但这不是我想要的.我希望能够从数据库中的表生成类映射文件,并将它们推送到我的src存储库.