问题标签 [fluent-nhibernate]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c# - 您如何映射也是 NHibernate hbm xml(或 fluent-nhibernate 类映射)中的主键的组件?
我试图弄清楚如何将组件映射为 nhibernate 中的主键,如果可能的话,也可以在流利的 nhibernate 中映射。
有问题的组件是一组独特的 3d 坐标,这是对象:
SpaceCoordinate 是一个结构体,定义如下:
在流利的 nhibernate 中使 SpaceCoordinate 成为一个组件,我将创建一个像这样的映射类:
但我想知道的是如何使 SpaceCoordinate 组件作为一个整体成为具有唯一约束的主键。我将如何在 Nhibernate xml 或流利的 nhibernate 类映射中映射它?
fluent-nhibernate - 如何在流利的 nhibernate 中将枚举映射为字符串?
是否可以使用 Fluent Nhibernate 将枚举映射为字符串?
asp.net - Fluent Nhibernate 在 3 个表上映射内部联接
数据结构为:
- Table[Questionnaire] 顶部节点
- Table[QuestionGroup] 只是标题等的分组
- 表[QuestionnaireQuestion]映射[Question]<->[QuestionGroup]的多对多关系和[Questionnaire]<->[Question]的多对多关系
- 表[问题]
出于报告目的,一个问题可以存在于许多问卷/问题组中。QuestionnaireQuestion 表还包含 Question 的一些属性,这些属性可能因调查问卷而异,例如是否需要?验证等。我想不通的是如何映射 Question.Required?。该属性是唯一的,过滤时对问卷调查问卷的问题表中的问卷_id 和问题_id
当我加载问卷时,我提供了一个问卷 ID,然后给我一个 QuestionGroups 列表,每个组都包含一个问题列表(尽管缺少验证属性)。
到目前为止,我的映射是:
fluent-nhibernate - 与nhibernate的映射对象化关系无法初始化集合
我正在按照本指南映射一个对象化的关系(many->many 映射表包含属性)。
生成的 SQL(见异常)正在工作并返回我想要的(严格来说它应该是一个内部连接?)。但我得到一个GenericADOException
说法:
无法初始化集合:[Questionnaires.Core.Questionnaire.Questions#CBDEDAFC183B4CD7AF1422423A91F589] [SQL:SELECT questions0_.ida_questionnaire_id为ida4_2_,questions0_.ida_questionnaire_question_id为ida1_2_,questions0_.ida_questionnaire_question_id为ida1_5_1_,questions0_.question_no为question2_5_1_,questions0_.ida_question_id为ida3_5_1_ ,questions0_.ida_questionnaire_id如ida4_5_1_,question1_.ida_question_id如ida1_3_0_,question1_.ida_question_type_id如ida2_3_0_,question1_.description如descript3_3_0_,question1_.validate_max如validate4_3_0_,question1_.validate_min如validate5_3_0_ FROM ida_questionnaire_question questions0_左外连接ida_question question1_上questions0_.ida_question_id = question1_ .ida_question_id WHERE questions0_.ida_questionnaire_id=?]
我猜这是因为Questionnaire
它真的映射到QuestionnaireQuestion
不Question
(Questionnaire
-> hasMany
-> QuestionnaireQuestion
<- hasMany
<- Question
)。但我似乎无法找到解决这个问题的方法。
问题:
问卷问题:
问卷:
在数据库中的异常中运行 SQL 的结果是 6 行(预期数量),其中包含:
- IDA4_2_:指南
- IDA1_2_:指南
- IDA1_5_1_:指南
- QUESTION2_5_1:编号(订单属性)
- IDA3_5_1_:指南
- IDA4_5_1:指南
- IDA1_3_0_:指南
- IDA2_3_0_:手机(类型属性)
- DESCRIPT3_3_0_:mobiletelefon(描述属性)
- VALIDATE4_3_0_:(RangeMin 属性)
- VALIDATE5_3_0_:(RangeMax 属性)
完整的例外是:
[InvalidCastException:不能使用对象类型 Questionnaires.Core.QuestionnaireQuestion 作为 Questionnaires.Core.Question。] NHibernate.Collection.Generic.PersistentGenericBag`1.ReadFrom(IDataReader 阅读器,ICollectionPersister 持久化器,ICollectionAliases 描述符,对象所有者)+160 NHibernate.Loader。 Loader.ReadCollectionElement(对象 optionalOwner,对象 optionalKey,ICollectionPersister 持久化器,ICollectionAliases 描述符,IDataReader rs,ISessionImplementor 会话)+407 NHibernate.Loader.Loader.ReadCollectionElements(Object[] 行,IDataReader 结果集,ISessionImplementor 会话)+412 NHibernate.Loader.Loader .GetRowFromResultSet(IDataReader resultSet, ISessionImplementor session, QueryParameters queryParameters, LockMode[] lockModeArray, EntityKey optionalObjectKey, IList hydradObjects, EntityKey[] 键,Boolean returnProxies) +472 NHibernate.Loader.Loader.DoQuery(ISessionImplementor session, QueryParameters queryParameters, Boolean returnProxies) +1010 NHibernate.Loader.Loader.DoQueryAndInitializeNonLazyCollections(ISessionImplementor session, QueryParameters queryParameters, Boolean returnProxies) +114 NHibernate.Loader.Loader.LoadCollection (ISessionImplementor 会话,对象 id,IType 类型)+362
[GenericADOException:无法初始化集合:[Questionnaires.Core.Questionnaire.Questions#CBDEDAFC183B4CD7AF1422423A91F589] [SQL:SELECT questions0_.ida_questionnaire_id为ida4_2_,questions0_.ida_questionnaire_question_id为ida1_2_,questions0_.ida_questionnaire_question_id为ida1_5_1_,questions0_.question_no为question2_5_1_,questions0_。 ida_question_id为ida3_5_1_,questions0_.ida_questionnaire_id为ida4_5_1_,question1_.ida_question_id为ida1_3_0_,question1_.ida_question_type_id为ida2_3_0_,question1_.description为descript3_3_0_,question1_.validate_max为validate4_3_0_,question1_.validate_min作为validate5_3_0_ FROM ida_questionnaire_question questions0_留在questions0_外连接ida_question question1_。 ida_question_id=question1_.ida_question_id WHERE questions0_.ida_questionnaire_id=?]] NHibernate.Loader。Loader.LoadCollection(ISessionImplementor session, Object id, IType type) +528 NHibernate.Loader.Collection.CollectionLoader.Initialize(Object id, ISessionImplementor session) +74 NHibernate.Persister.Collection.AbstractCollectionPersister.Initialize(Object key, ISessionImplementor session) + 59 NHibernate.Event.Default.DefaultInitializeCollectionEventListener.OnInitializeCollection(InitializeCollectionEvent 事件) +573 NHibernate.Impl.SessionImpl.InitializeCollection(IPersistentCollection 集合,布尔写法) +150 NHibernate.Collection.AbstractPersistentCollection.ForceInitialization() +287 NHibernate.Engine.StateonfulsLatestCollection () +213 NHibernate.Loader.Loader.DoQueryAndInitializeNonLazyCollections(ISessionImplementor session, QueryParameters queryParameters,Boolean returnProxies) +171 NHibernate.Loader.Loader.LoadEntity(ISessionImplementor session, Object id, IType identifierType, Object optionalObject, String optionalEntityName, Object optionalIdentifier, IEntityPersister persister) +493 NHibernate.Loader.Entity.AbstractEntityLoader.Load(ISessionImplementor session, Object id, Object optionalObject, Object optionalId) +82 NHibernate.Loader.Entity.AbstractEntityLoader.Load(Object id, Object optionalObject, ISessionImplementor session) +54 NHibernate.Persister.Entity.AbstractEntityPersister.Load(Object id, Object optionalObject, LockMode lockMode, ISessionImplementor 会话)+206 NHibernate.Event.Default.DefaultLoadEventListener.LoadFromDatasource(LoadEvent 事件,IEntityPersister 持久化,EntityKey keyToLoad,LoadType 选项)+133 NHibernate.Event.Default。DefaultLoadEventListener.DoLoad(LoadEvent 事件,IEntityPersister 持久化,EntityKey keyToLoad,LoadType 选项)+948 NHibernate.Event.Default.DefaultLoadEventListener.Load(LoadEvent 事件,IEntityPersister 持久化,EntityKey keyToLoad,LoadType 选项)+436 NHibernate.Event.Default.DefaultLoadEventListener。 ProxyOrLoad(LoadEvent event, IEntityPersister persister, EntityKey keyToLoad, LoadType options) +236 NHibernate.Event.Default.DefaultLoadEventListener.OnLoad(LoadEvent event, LoadType loadType) +1303 NHibernate.Impl.SessionImpl.FireLoad(LoadEvent event, LoadType loadType) +125 NHibernate.Impl.SessionImpl.Get(String entityName, Object id) +145 NHibernate.Impl.SessionImpl.Get(Type entityClass, Object id) +66 NHibernate.Impl.SessionImpl.Get(Object id) +91 SharpArch.Data.NHibernate .RepositoryWithTypedId`2.Get(IdT id) +152 Questionnaires.Controllers.QuestionnaireController.Create(String username, String id) in C:\Documents and Settings\berbor\Mine dokumenter\Visual Studio 2008\Projects\Questionnaires\Questionnaires.Controllers\ QuestionnaireController.cs:40 lambda_method(ExecutionScope, ControllerBase, Object[]) +205 System.Web.Mvc.ActionMethodDispatcher.Execute(ControllerBase 控制器, Object[] 参数) +17 System.Web.Mvc.ReflectedActionDescriptor.Execute(ControllerContext controllerContext, IDictionary`2 个参数)+178 System.Web.Mvc.ControllerActionInvoker.InvokeActionMethod(ControllerContext controllerContext,ActionDescriptor actionDescriptor,IDictionary`2 个参数)+24 System.Web.Mvc.<>c__DisplayClassa.b__7() +52 System.Web.Mvc .ControllerActionInvoker。InvokeActionMethodFilter(IActionFilter filter, ActionExecutingContext preContext, Func`1 continuation) +254 System.Web.Mvc.<>c__DisplayClassc.b__9() +19 System.Web.Mvc.ControllerActionInvoker.InvokeActionMethodWithFilters(ControllerContext controllerContext, IList`1 过滤器, ActionDescriptor actionDescriptor , IDictionary`2 参数) +192 System.Web.Mvc.ControllerActionInvoker.InvokeAction(ControllerContext controllerContext, String actionName) +350 System.Web.Mvc.Controller.ExecuteCore() +110 System.Web.Mvc.ControllerBase.Execute(RequestContext requestContext)+27 System.Web.Mvc.ControllerBase.System.Web.Mvc.IController.Execute(RequestContext requestContext)+7 System.Web.Mvc.MvcHandler.ProcessRequest(HttpContextBase httpContext)+119 System.Web.Mvc.MvcHandler。ProcessRequest(HttpContext httpContext) +41 System.Web.Mvc.MvcHandler.System.Web.IHttpHandler.ProcessRequest(HttpContext httpContext) +7 System.Web.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() +181 System.Web .HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously) +75
至于我这样做的原因:
一个问卷可能有很多问题,一个问题可能有很多问卷。我希望能够Questions
根据上下文(Questionnaire
在其中)给出一些属性,一个问题可能需要在一个调查问卷中,而不是另一个问题等。这不仅仅是顺序,这只是一个试图保持简单的例子。
尝试将数据加载到Questionnaire.IList<Question>
. 在我修改我IList<Questionnaire>
的 toIList<QuestionnaireQuestion>
和相应的映射后,它仍然被抛出。
那么问题将Questionnaire.Questions
是映射为包含QuestionnaireQuestion
但类型为Question
。但是,如果我尝试将其映射为包含QuestionnaireQuestion
我的 SQL,则根本不加入,它仍然会失败。这是我应该做的,只是我做错了吗?在我读到的示例中,他就像我所看到的那样做,唯一的区别是现在使用泛型的 FluentNhibernate 的较新版本。所以我需要指定正确的类型。
nhibernate - NHibernate:使用 Fluent Nhibernate 保存子对象
在我的系统中,我有两个实体 - ShoppingCart 和 ShoppingCartItem。相当通用的用例。但是,当我保存我的 ShoppingCart 时,没有任何项目被保存到数据库中。
在我的对象中,我创建了一个新的 ShoppingCart 对象。
然后,我将从数据库中获取的现有产品添加到开头。
这只是将项目添加到 IList 的简单包装器。
然后我在存储库上调用 SaveOrUpdate
看起来像这样:
我正在使用 Fluent NHibernate 进行映射:
数据库架构 (SQL Server 2005) 也相当通用:
当我保存或更新我的 ShoppingCart 时,为什么没有任何 ShoppingCartItems 也被保存?
请帮忙。
谢谢
本
更新:将其包装在交易中,为我提供了更多信息:
无法将值 NULL 插入到列“ShoppingCartId”、表“WroxPizza.dbo.ShoppingCartItems”中;列不允许空值。插入失败。该语句已终止。
这是因为它是一辆新推车。
fluent-nhibernate - Fluent-NHibernate 映射
在我的数据库中,我有一个包含逗号分隔的电子邮件列表的字段。我如何将它映射到IList<string>
我的模型中的 a ?
asp.net-mvc - ASP.NET MVC + fluent nNibernate,什么IoC工具?
我正在开发一个 ASP.NET MVC 项目,我们决定使用 Fluent nHibernate 进行数据访问。为了实现松散耦合,我们采用 IoC/DI 模式。我的问题是要使用什么 IoC 工具。我试图找出 windsor、ninject、spring、structuremap 和 unity 之间的区别,但很难看出每个人都提供的好处。你的经验是什么?
fluent-nhibernate - Fluent NHibernate 多对多类型约定
我在 Fluent NHIbernate 中使用 AutoPersistenceModel 来映射我的所有实体,并且一切正常:D
但是,我的几个对象有
在数据库中只有一个评论表,每个带有上述代码的实体都有自己的评论链接表。
目前我正在做的是:
对于每个实体。
有什么方法可以设置一个约定,其中所有到 IList<Comment> 的映射都自动连接到上面的表名称约定中的 manytomany?
谢谢
安德鲁
nhibernate - 流畅的 NHibernate + Lucene 搜索 (NHibernate.Search)
我正在使用 Fluent NHibernate,我想用 Lucene 实现 NHibernate.Search,但我找不到任何关于如何使用 Fluent NHibernate 来实现的示例。似乎有两个步骤。(根据城堡)
在配置中设置 Hibernate 属性:
- hibernate.search.default.directory_provider
- hibernate.search.default.indexBase
- hibernate.search.analyzer
初始化事件侦听器以索引持久对象
- configuration.SetListener(ListenerType.PostUpdate, new FullTextIndexEventListener());
- configuration.SetListener(ListenerType.PostInsert, new FullTextIndexEventListener());
- configuration.SetListener(ListenerType.PostDelete, new FullTextIndexEventListener());
我想出了如何将属性添加到 Fluent NHibernate 源配置,但我找不到设置事件侦听器的位置。
fluent-nhibernate - Fluent NHibernate 一对多单向映射
我有 Post 和 Comment 类,它们有一对多的关系,其中 Post 有一个 Comments 列表。我如何将其映射为与 Fluent NHibernate 的单向关系,因为评论不需要知道其父 Post?目前,这是我的评论映射:
和邮政:
这不起作用,因为当我尝试使用新添加的评论保存 Post 实例时,评论 (PostId) 上的外键为空。当然,不能使用 NULL PostId 保存评论。我试过删除 .Inverse() 子句,但这也不起作用。