标签: fluent-nhibernate

枚举到整数映射,导致每次刷新更新

我试图将我的模型中的枚举属性(System.DayOfWeek的实例)映射到整数数据库字段.模型中的其他枚举属性应该映射到字符串,所以我不希望定义约定.

我知道这应该可以使用流畅的映射,如:

Map(x => x.DayOfWeek).CustomType<int>();
Run Code Online (Sandbox Code Playgroud)

事实上,乍一看这似乎有效.

但是,我注意到每次刷新会话时都会更新具有以这种方式映射的属性的实体实例,即使没有对它们进行任何修改.

为了找出导致此刷新的原因,我设置了一个IPreUpdateEventListener,并检查了该实体的OldState和State.请参见附图.在OldState中,相关对象是int,而在State中它是DayOfWeek.

如果我使用未指定类型属性的HBM XML映射,则不会出现此问题.

所以...

这是GenericEnumMapper中的错误还是缺点?有没有办法告诉FNH映射不要在生成的HBM上指定任何类型属性?如果没有,我可以指定NH用于枚举的默认类型(以及那是什么)?

替代文字

nhibernate fluent-nhibernate

22
推荐指数
2
解决办法
3523
查看次数

NHibernate"无法确定X的类型"错误

在项目中升级NHibernate和FluentNHibernate DLL后,我现在在初始化SessionFactory时遇到"无法确定:MyApp.Domain.Entities.AppCategory的类型"异常.我的代码中唯一的变化是调整ForeignKeyConvention的实现来覆盖GetKeyName ( Member member, Type type )抽象方法,而不是GetKeyName ( PropertyInfo property, Type type ).

对于FluentNHibernate,升级的DLL从1.0.0.593到1.1.0.685,对于NHibernate,升级的DLL从2.1.0.4000到2.1.2.4000.寻找解决方案的部分困难是我们正在使用的NHibernate版本的旧时代,但至少目前还无法改变.

我在下面发布了完整的例外和所有相关的代码和配置.我为这个长度道歉,但我不知道问题可能在哪里.

完全例外

FluentNHibernate.Cfg.FluentConfigurationException : An invalid or incomplete configuration was used while creating a SessionFactory. Check PotentialReasons collection, and InnerException for more detail.

  ----> FluentNHibernate.Cfg.FluentConfigurationException : An invalid or incomplete configuration was used while creating a SessionFactory. Check PotentialReasons collection, and InnerException for more detail.

  ----> NHibernate.MappingException : Could not compile the mapping document: (XmlDocument)
  ----> NHibernate.MappingException : Could not determine …
Run Code Online (Sandbox Code Playgroud)

c# nhibernate fluent-nhibernate

22
推荐指数
1
解决办法
1万
查看次数

使用流畅的NHibernate AutoMapping保存级联

如何使用具有Fluent NHibernate的AutoMap持久性模型"打开"级联保存?

如:

我救人,手臂也应该保存.目前我明白了

"对象引用未保存的瞬态实例 - 在刷新之前保存瞬态实例"

public class Person : DomainEntity
{
  public virtual Arm LeftArm { get; set; }
}

public class Arm : DomainEntity
{
  public virtual int Size { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

我发现了一篇关于这个主题的文章,但似乎已经过时了.

fluent-nhibernate automapping

21
推荐指数
2
解决办法
1万
查看次数

使用Fluent Nhibernate定义NHibernate过滤器的语法?

似乎我找不到使用流畅的Nhibernate定义nhibernate过滤器的正确语法.

我试图关注这个ayende的博文:

http://ayende.com/Blog/archive/2006/12/26/LocalizingNHibernateContextualParameters.aspx

我使用.FormulaIs()方法在我的属性上定义了公式,但在谷歌上找不到如何将此定义转换为流畅的nhibernate:

 < filter-def name='CultureFilter'>
   < filter-param name='CultureId' type='System.Int32'/>
 < /filter-def> 
Run Code Online (Sandbox Code Playgroud)

nhibernate fluent-nhibernate

21
推荐指数
3
解决办法
1万
查看次数

流畅的NHibernate主键约束命名约定

有没有办法在Fluent NHibernate中为我的主键约束创建命名约定?

我知道您可以命名外键约束,但似乎不可能命名主键约束.

constraints naming-conventions primary-key fluent-nhibernate

21
推荐指数
1
解决办法
2944
查看次数

这个错误在nhibernate中意味着什么

出乎意料的是,当使用nhibernate进行大量更新时,我收到此错误.

行已被另一个事务更新或删除(或未保存的值映射不正确):[MyDomainObject]

错误中没有其他信息.是否有一些建议的方法来帮助确定根本问题,或者有人可以给我一个更好的解释这个错误指示或是一个sympton周围.

一些额外的信息

我查看了对象,所有数据看起来都很好,它有一个ID等..

请注意,这是在asp.net-mvc网站的单个调用堆栈中运行,因此我不希望在并发性方面存在任何线程问题需要担心.

nhibernate fluent-nhibernate

21
推荐指数
3
解决办法
2万
查看次数

流利的NHibernate Where Clause

我必须在Fluent NHibernate中编写一个查询

Select * from Users where UserName = 'Abcd' AND Password = '123456'

如何用上面的查询创建 session.CreateCriteria

nhibernate fluent-nhibernate

21
推荐指数
1
解决办法
2万
查看次数

流畅的nHibernate:对不同模式中具有相同结构的表使用相同的映射文件

这是我的映射类:

class MyTableMap : ClassMap<MyTable>
{
    public MyTableMap()
    {
        Schema("mySchema");
        Id(x => x.id);
        Map(x => x.SomeString);
    }
}           
Run Code Online (Sandbox Code Playgroud)

这适用于我的第一个数据库中的表([mySchema].[MyTable]).

但是这个表("MyTable")存在于(实际上很多)不同的数据库中,但由于任何原因,模式总是被命名为不同的(我没有任何控制权):

所以在数据库"OtherDB"中有表[SomeOtherSchema].[MyTable]与第一个db中的[mySchema].[MyTable]具有相同的结构.

出于显而易见的原因,我不想为每个数据库创建不同的映射类.

那么:有没有办法改变映射类的模式,所以我只需创建一个映射类(不使用singelton!)?

c# schema fluent-nhibernate

21
推荐指数
1
解决办法
482
查看次数

NHibernate - 懒得初始化一个角色集合

我有以下看似简单的场景,但是我对NHibernate还是一个新手.

尝试在Controller上为"编辑"操作加载以下模型时:

控制器的编辑操作:

public ActionResult Edit(Guid id)
{
    return View(_repository.GetById(id));
}
Run Code Online (Sandbox Code Playgroud)

库:

public SomeModel GetById(Guid id)
{
    using (ISession session = NHibernateSessionManager.Instance.GetSession())
        return session.Get<SomeModel >(id);
}
Run Code Online (Sandbox Code Playgroud)

模型:

public class SomeModel
{
    public virtual string Content { get; set; }
    public virtual IList<SomeOtherModel> SomeOtherModel { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

我收到以下错误:

- 懒得初始化角色集合:SomeOtherModel,没有关闭会话或会话

我在这里错过了什么?

nhibernate asp.net-mvc fluent-nhibernate

20
推荐指数
2
解决办法
2万
查看次数

流畅的nhibernate - 在同一实体上的多对多关系映射

我在尝试绘制多对多关系时遇到了问题,其中关系的两侧都引用了同一个实体.我正在使用Fluent NHibernate和NH3.1.

基本上,情况是这样的 - 我有一个类别,可以有多个父母.因此,一个类别有多个其他类别作为父类,以及多个其他类别作为其子类.

HasManyToMany(x => x.ParentCategories).AsBag().Table("parentcategorychildren").ParentKeyColumn("ChildID").ChildKeyColumn("ParentID").Cascade.SaveUpdate();
HasManyToMany(x => x.ChildrenCategories).AsBag().Table("parentcategorychildren").ParentKeyColumn("ParentID").ChildKeyColumn("ChildID").Inverse();
Run Code Online (Sandbox Code Playgroud)

但是,当我尝试构建工厂时,我收到以下错误:

Category.ChildrenCategories与Category.ChildrenCategories的关系在双方都指定了Inverse.从关系的一侧移除反向.

我发现奇怪的是为什么它将Category.ChildrenCategories提到Category.ChildrenCategories,而不是ParentCategories?

任何帮助将不胜感激 !

我刚刚为此创造了一笔赏金,因为这对我来说非常重要.拜托,我对"你不能这样做"作为答案不感兴趣.

c# nhibernate entity-relationship many-to-many fluent-nhibernate

20
推荐指数
2
解决办法
4168
查看次数