問題タブ [automapping]
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.
fluent-nhibernate - Fluent NHibernate + AutoMappings: 生成された SQL の謎の列
NH から SQL クエリを取得していますが、存在しない列が生成されています (したがって、NH から ADOException が生成されます)。
CreatedBy
私の問題は、列がどこから来ているのか分からないことです。これが私のクラス構造です。
アプリの起動時に構成を調べるとColumnIterator
、Role クラス マップの が表示されます。ディクショナリには、id、user_id、roledescription、createdby_id の 4 つの項目があります。したがって、クエリは構成に基づいて正当ですが、クラスに基づいて構成を理解できません。
はい、ASP.NET DLL キャッシュをクリアし、bin ディレクトリと obj ディレクトリを削除しました。
編集#1
これは私のFluently.Configureステートメントです
そして、これは私の呼びかけですGetPersistenceModel()
私のカスタム構成は、パブリック自動プロパティのみをマップするように言っています。これは、他の計算されたプロパティをドメイン エンティティに追加できるようにするためです。ユーザー マップのオーバーライドは、テーブル名が[User]
であることを確認しますUser
。カスタム HasMany 規則セットは、すべてに多数の関係がある場合に、すべて-削除-孤立をカスケードします。
編集#2
これはさらに良くなります。これは、構成オブジェクトを作成した後で、セッション ファクトリ オブジェクトを作成する前の列反復子です。
見る?createdby_id
マップされた列のリストに列がありません。これは、セッション ファクトリ オブジェクトを作成した後の列反復子です。
そして今、createdby_id
コラムがあります。私は今本当に迷っています。
編集 3
わかりました、私は今何かに乗っていると思います。
先週、顧客から新しい要件を受け取りました。その要件は、誰が課題を作成したかを知りたいということでした。したがって、次のような新しいプロパティがあります。
私の割り当てテーブルには、このような列があります。
そして、この新しい列には User テーブルへの FK があります。
このプロパティをコメントアウトすると、すべてが再び機能します。user_id
SQL は、まさに私が期待する方法で、によるクエリに戻ります。これがこのように起こらないようにするために使用できるオーバーライドのタイプはありますか?
nhibernate - NHibernate のコレクションからの削除操作を永続化する
コレクション (リストなど) からいくつかのオブジェクトを削除 (または削除) し、このコレクションの親から SaveOrUpdate を呼び出すと、子の行は削除されませんが、外部キーの値を NULL に設定することによって更新されます。
強制的に削除するにはどうすればよいですか (子行)。
fluent-nhibernate - 流暢なnhibernateを使用して多対1の関係を自動マッピングするにはどうすればよいですか
私は次のクラスを持っています:
このクラスを流暢なnhibernateで自動マッピングするにはどうすればよいですか。
oracle - fluentNhibernate 自動マッピングの変更で制約名を変更します
私は変更を伴うFluentNHibernate自動マッピングでオラクルを使用しています&NHibernate問題は、マッピングモデルをオーバーライドして制約名を指定する方法です??
次のような生成されたSQL:
次のようにマッピング モデルをオーバーライドして、「FK_VerLongIdentifierLongerThan30Characther」をより小さな識別子に変更する必要があります。
.net - AutoMapperを使用した複雑なDAL->BLマッピング
次のプロジェクトでAutoMapperを使用することを検討しており、考えられる「ボトルネック」を見つけようとしています。現時点で私が想像できる最も複雑なケースは次のとおりです。データベース内の3つの(たとえば)テーブルで表されるドメインクラス(私のデータアクセス層はLINQ to SQLです)。クラスのインスタンスを構築するには、3つのクエリを実行する必要があります。
- 表AからIDで選択(1行、
Class
プロパティに直接移動) - 表BからIDで選択(0..1行、オプションの
Class.Code
プロパティに移動) - テーブルCからIDで選択(0..N行、
Class.Parameters
コレクションに移動)
そして、マッピングを構成する方法がわかりません。私が検討したオプションは次のとおりです。
- 3つのクエリを実行してマップ
Tuple<A,B,C>
->Class
- 外部結合を使用してクエリ1と2を結合します(より効果的)。しかし、匿名タイプで何をしますか?
- マッピングにデータコンテキストを挿入し、定義
A
->Class
マッピングして、型コンバーターに仕事を任せますか?
勝利のように見えるものはありません。あなたは何を提案しますか?
編集:まあ、そのような複雑なケースは非常にまれであり(10-20%)、私はそれらを手動で行うことができ、残りはAutoMapperで80-90%うまくいきます。しかし、AutoMapperがそのような戦略のために設計されていないのか、それとも重要な何かが欠けているのかを知りたいのですが。
fluent-nhibernate - Fluent NHibernate FluentMappings でフィルターを定義することは可能ですか?
Fluent NHibernate で自動マッピングを使用すると、次のようなことができます。
FluentMappings で似たようなことができるように探していますが、同様の動作 (名前空間でのフィルタリング) を理解できないようです。
fluent-nhibernate - Fluent NHibernate-自動マッピング:単一のプロパティにnullを許可
私はこの質問が何度も同じような形で提起されたことを知っていますが、どのスレッドも私の質問に対する具体的な答えを私に与えることができませんでした。
Fluent NHibernateとFluentの自動マッピングを使用して、ドメインエンティティをマッピングします。現在、私はこの規則クラスを使用して、すべてのプロパティをNULL以外に設定しています。
大きな問題は次のとおりです。
エンティティクラスの単一のプロパティをNULLにするには、何をする必要がありますか?
これが私のエンティティクラスの1つです。
誰かが最終的に私を助けてくれるなら、私は本当に嬉しいです!Googleのリターンページに入力した可能性のあるすべての検索文字列で、既にアクセス済みとしてマークされています...
ありがとう、
アルネ
編集:タイトルを変更しました...単一のプロパティにNULLを許可したい
c# - 集約ルートの流暢なNHibernateカスケード削除規則
質問は次のとおりです。型から継承する場合にエンティティ参照を削除しないようにする規則を作成するにはどうすればよいRoot
ですか。
私は流暢なnhibernateを使用しており、それは自動マッピング機能です。デフォルトでカスケード削除をオンにしました。
別のルートを参照する集約ルートを実際に削除する必要がある場合に最終的に問題が発生するまで、すべてが本当にクールでした。
私はルーツを手に入れましUser
たApplication
。User
レジスタApplications
。User
誤って登録された場合、ロールで削除できる時間差がわずかにありAdmin
ます(そのデータは必要ないと確信しています)。
をUser
削除Application
すると、カスケード削除のため、nhibernateはUser
それ自体を削除します(皮肉なことに...)。
[アプリケーション]->[ユーザーの関連付け]のみにカスケードするSaveUpdateを指定する方法がわかりません。
トリックを行います:
さらに、オーバーライドを探す場所をfnhに伝えました。
nhibernate - Fluent NHibernate:自動マップされた文字列コレクションの基になるSQL型をどのように変更しますか?
私はクラスを持っています:
' IList<string> ChildPages
'がFluentNHibernateによって自動マップされると、コレクション内の各文字列のバッキングフィールドを使用して' ChildPages
'結合テーブルが作成されます。nvarchar(255)
しかし、問題は、SQLバッキングフィールドを' text
'にしたいので、このエンティティの長いエントリを持つことができるということです。
この変更を行う最も簡単な方法は何ですか?
自動マッピングされたプリミティブコレクションの基になるタイプをどのように変更しますか?
また、追加のポイントについては、規則またはマッピングのオーバーライドを使用してこれをどのように行いますか?
どうも!
fluent-nhibernate - BuildSessionFactory行の自動マッピングとFNHの例外
vs2008で最新バージョンの自動マッピングとFNHを使用していますが、この例外が発生しました。
まず、例外は有益ではありません!どのクラスがこのエラーを引き起こしているのかわかりません。
第二に、どうすればこの問題を解決できますか?それは私が持っている抽象的な'description'プロパティのためですか?