問題タブ [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 は、次のように定義された構造体です。
SpaceCoordinate をコンポーネントにする流暢な nhibernate では、次のようなマッピング クラスを作成します。
しかし、私が知りたいのは、 SpaceCoordinate コンポーネント全体を一意の制約を持つ主キーにする方法です。これを Nhibernate xml または流暢な nhibernate クラスマップでどのようにマッピングしますか?
fluent-nhibernate - 流暢なnhibernateで列挙型を文字列としてどのようにマップしますか?
Fluent Nhibernate を使用して列挙型を文字列としてマップすることは可能ですか?
asp.net - 3つのテーブルでのFluentNhibernateマッピング内部結合
データ構造は次のとおりです。
- テーブル[アンケート]トップノード
- Table[QuestionGroup]見出しなどの単なるグループ化
- テーブル[QuestionnaireQuestion]マッピング[Question]<->[QuestionGroup]多対多の関係、および[Questionnaire]<->[Question]多対多の関係
- テーブル[質問]
レポートの目的で、多くの質問票/質問グループに1つの質問が存在する可能性があります。テーブルQuestionnaireQuestionには、必須?のように、質問表ごとに異なる可能性のある質問のいくつかのプロパティも含まれています。検証など。私が理解できないのは、Question.Requiredをマップする方法です。このプロパティは、question_idおよびquestion_idで質問票質問テーブルをフィルタリングするときに一意です。
質問票をロードするとき、質問票IDを指定します。これにより、質問グループのリストが表示されます。各グループには、質問のリストが含まれています(ただし、検証プロパティはありません)。
これまでのところ、私のマッピングは次のとおりです。
fluent-nhibernate - nhibernate とのマップされた Objectified 関係がコレクションを初期化できない
このガイドに従って、オブジェクト化された関係 (many->many マッピング テーブルにはプロパティが含まれています) をマッピングしています。
生成された SQL (例外を参照) は機能しており、必要なものを返します (厳密に言えば、内部結合であるべきでしたか?)。しかし、私はGenericADOException
言います:
could not initialize a collection: [Questionnaires.Core.Questionnaire.Questions#CBDEDAFC183B4CD7AF1422423A91F589][SQL: SELECT questions0_.ida_questionnaire_id as ida4_2_, questions0_.ida_questionnaire_question_id as ida1_2_, questions0_.ida_questionnaire_question_id as ida1_5_1_, questions0_.question_no as question2_5_1_, questions0_.ida_question_id as ida3_5_1_ , questions0_.ida_questionnaire_id as ida4_5_1_, question1_.ida_question_id as ida1_3_0_, question1_.ida_question_type_id as ida2_3_0_, question1_.description as descript3_3_0_, question1_.validate_max as validate4_3_0_, question1_.validate_min as validate5_3_0_ FROM ida_questionnaire_question questions0_ left outer join ida_question question1_ on questions0_.ida_question_id=question1_ .ida_question_id WHERE question0_.ida_questionnaire_id=?]
これは、実際には not ( -> -> <- <- )Questionnaire
にマッピングされているためだと思います。しかし、私はこれを回避する方法を見つけることができないようです。QuestionnaireQuestion
Question
Questionnaire
hasMany
QuestionnaireQuestion
hasMany
Question
質問:
アンケート質問:
アンケート:
DB の例外で SQL を実行した結果は、以下を含む 6 行 (期待される数) です。
- IDA4_2_: ガイド
- IDA1_2_: ガイド
- IDA1_5_1_: ガイド
- QUESTION2_5_1: Number (注文プロパティ)
- IDA3_5_1_: ガイド
- IDA4_5_1: ガイド
- IDA1_3_0_: ガイド
- IDA2_3_0_: MOBILEPHONE (型プロパティ)
- DESCRIPT3_3_0_: mobiltelefon (説明プロパティ)
- 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(Object optionalOwner、Object optionalKey、ICollectionPersister 永続化、ICollectionAliases 記述子、IDataReader rs、ISessionImplementor セッション) +407 NHibernate.Loader.Loader.ReadCollectionElements(Object[] 行、IDataReader resultSet、ISessionImplementor セッション) +412 NHibernate.Loader.Loader .GetRowFromResultSet(IDataReader 結果セット、ISessionImplementor セッション、QueryParameters queryParameters、LockMode[] lockModeArray、EntityKey optionalObjectKey、IList hydratedObjects、EntityKey[] キー、Boolean returnProxies) +472 NHibernate.Loader.Loader.DoQuery(ISessionImplementor セッション、QueryParameters queryParameters、Boolean returnProxies) +1010 NHibernate.Loader.Loader.DoQueryAndInitializeNonLazyCollections(ISessionImplementor セッション、QueryParameters queryParameters、Boolean returnProxies) +114 NHibernate.Loader.Loader.LoadCollection (ISessionImplementor セッション、オブジェクト ID、IType タイプ) +362
[GenericADOException: could not initialize a collection: [Questionnaires.Core.Questionnaire.Questions#CBDEDAFC183B4CD7AF1422423A91F589][SQL: SELECT questions0_.ida_questionnaire_id as ida4_2_, questions0_.ida_questionnaire_question_id as ida1_2_, questions0_.ida_questionnaire_question_id as ida1_5_1_, questions0_.question_no as question2_5_1_, questions0_. ida_question_id as ida3_5_1_, questions0_.ida_questionnaire_id as ida4_5_1_, question1_.ida_question_id as ida1_3_0_, question1_.ida_question_type_id as ida2_3_0_, question1_.description as descript3_3_0_, question1_.validate_max as validate4_3_0_, question1_.validate_min as validate5_3_0_ FROM ida_questionnaire_question questions0_ left outer join ida_question question1_ on questions0_. ida_question_id=question1_.ida_question_id WHERE question0_.ida_questionnaire_id=?]] NHibernate.Loader.Loader.LoadCollection(ISessionImplementor セッション、オブジェクト ID、IType タイプ) +528 NHibernate.Loader.Collection.CollectionLoader.Initialize(オブジェクト ID、ISessionImplementor セッション) +74 NHibernate.Persister.Collection.AbstractCollectionPersister.Initialize(オブジェクト キー、ISessionImplementor セッション) + 59 NHibernate.Event.Default.DefaultInitializeCollectionEventListener.OnInitializeCollection(InitializeCollectionEvent イベント) +573 NHibernate.Impl.SessionImpl.InitializeCollection(IPersistentCollection コレクション、ブール書き込み) +150 NHibernate.Collection.AbstractPersistentCollection.ForceInitialization() +287 NHibernate.Engine.StatefulPersistenceContext.zyLayonLayer () +213 NHibernate.Loader.Loader.DoQueryAndInitializeNonLazyCollections(ISessionImplementor セッション、QueryParameters queryParameters、Boolean returnProxies) +171 NHibernate.Loader.Loader.LoadEntity(ISessionImplementor セッション、オブジェクト ID、IType identifierType、オブジェクト optionalObject、文字列 optionalEntityName、オブジェクト optionalIdentifier、IEntityPersister 永続化) +493 NHibernate.Loader.Entity.AbstractEntityLoader.Load(ISessionImplementor セッション、オブジェクトid、オブジェクト optionalObject、オブジェクト optionalId) +82 NHibernate.Loader.Entity.AbstractEntityLoader.Load(オブジェクト id、オブジェクト optionalObject、ISessionImplementor セッション) +54 NHibernate.Persister.Entity.AbstractEntityPersister.Load(オブジェクト id、オブジェクト 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 イベント、IEntityPersister 永続化、EntityKey keyToLoad、LoadType オプション) +236 NHibernate.Event.Default.DefaultLoadEventListener.OnLoad(LoadEvent イベント、LoadType loadType) +1303 NHibernate.Impl.SessionImpl.FireLoad(LoadEvent イベント、LoadType loadType) +125 NHibernate.Impl.SessionImpl.Get(文字列エンティティ名、オブジェクト ID) +145 NHibernate.Impl.SessionImpl.Get(タイプ entityClass、オブジェクト ID) +66 NHibernate.Impl.SessionImpl.Get(オブジェクト 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 controller, Object[] parameters) +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 フィルター、ActionExecutingContext preContext、Func`1 継続) +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 ステップ、ブール値 & 完了した同期) +75
私がこれをしている理由については:
1 つのアンケートに複数の質問が含まれる場合もあれば、1 つの質問に複数のアンケートが含まれる場合もあります。Questions
コンテキスト (含まれている) に応じていくつかのプロパティを指定できるようにしたいと考えていますQuestionnaire
。あるアンケートでは 1 つの質問が必要になる場合がありますが、別の質問では必要ない場合があります。
例外は、データを にロードしようとする場合Questionnaire.IList<Question>
です。IList<Questionnaire>
そして、 toIList<QuestionnaireQuestion>
とそれぞれのマッピングを変更した後もスローされます。
問題は、それがQuestionnaire.Questions
含むとしてマップされているQuestionnaireQuestion
が、タイプであるということQuestion
です。しかし、SQL を含むものとしてマップしようとすると、QuestionnaireQuestion
まったく結合されず、それでも失敗します。やり方が間違っているだけで、これは私がすべきことですか?私が読んだ例では、私が見る限り、彼は私と同じようにそれを行っています.唯一の違いは、現在ジェネリックを使用しているFluentNhibernateの新しいバージョンです. したがって、正しいタイプを指定する必要があります。
nhibernate - NHibernate:FluentNhibernateを使用して子オブジェクトを保存する
私のシステムには、ShoppingCartとShoppingCartItemの2つのエンティティがあります。かなり一般的なユースケース。ただし、ShoppingCartを保存すると、どのアイテムもDBに保存されません。
オブジェクト内に、新しいShoppingCartオブジェクトを作成します。
次に、データベースから取得した既存の製品を最初に追加します。
これは、アイテムをIListに追加するための単純なラッパーです。
次に、リポジトリでSaveOrUpdateを呼び出します
これは次のようになります:
マッピングにFluentNHibernateを使用しています。
データベーススキーマ(SQL Server 2005)もかなり一般的です。
ShoppingCartをSaveOrUpdateすると、ShoppingCartItemsも保存されないのはなぜですか?
助けてください。
ありがとう
ベン
更新:トランザクションでラップすると、さらに情報が得られます:
列'ShoppingCartId'、テーブル'WroxPizza.dbo.ShoppingCartItems'に値NULLを挿入できません。列はnullを許可しません。INSERTは失敗します。ステートメントは終了されました。
これは新しいカートだからです。
fluent-nhibernate - Fluent-NHibernate マッピング
私のデータベースには、コンマで区切られた電子メールのリストを含むフィールドがあります。IList<string>
それをモデルの にどのようにマッピングしますか?
asp.net-mvc - ASP.NET MVC + 流暢な nNibernate、どの IoC ツール?
私は、データアクセスに Fluent nHibernate を使用することを決定した ASP.NET MVC プロジェクトに取り組んでいます。疎結合を有効にするには、IoC/DI パターンを使用します。私の質問は、どの IC ツールを使用するかです。Windsor、ninject、spring、structuremap、および unity の違いを見つけようとしましたが、それぞれが提供する利点を理解するのは困難です。あなたの経験は?
nhibernate - Fluent NHibernate + Lucene 検索 (NHibernate.Search)
Fluent NHibernate を使用しており、Lucene で NHibernate.Search を実装したいのですが、Fluent NHibernate でそれを行う方法の例が見つかりません。2段階あるようです。(キャッスルによると)
構成で 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 Source Configuration に追加する方法はわかりましたが、イベント リスナーが設定されている場所が見つかりません。
fluent-nhibernate - Fluent NHibernate の 1 対多の一方向マッピング
私は Post クラスと Comment クラスを持っており、それらは Post がコメントのリストを持つ 1 対多の関係を持っています。コメントは親の投稿を知る必要がないため、これを Fluent NHibernate との一方向の関係としてマップするにはどうすればよいですか? 現在、これはコメントの私のマッピングです:
および投稿の場合:
新しく追加されたコメントで Post インスタンスを保存しようとすると、コメント (PostId) の外部キーが NULL のままになるため、これは機能しません。そしてもちろん、NULL PostId でコメントを保存することはできません。.Inverse() 句を削除しようとしましたが、それも機能しません。