問題タブ [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.
nhibernate - Fluent NH エンティティ名のカスタム Id 列
レガシー DB で Fluent Nhibernate と Automapper を使用して S#arp アーキテクチャを使用しています。
テーブルの 1 つの id 列が Automapping 規則と異なるため、オーバーライドしようとしましたが成功しませんでした。私はこのエラーで終わります
FluentNHibernate.Cfg.FluentConfigurationException : SessionFactory の作成中に無効または不完全な構成が使用されました。詳細については、PotentialReasons コレクションと InnerException を確認してください。
- データベースが Database メソッドで構成されていません。
FluentNHibernate.Cfg.FluentConfigurationException : SessionFactory の作成中に無効または不完全な構成が使用されました。詳細については、PotentialReasons コレクションと InnerException を確認してください。
データベースが Database メソッドで構成されていません。
---- NHibernate.MappingException : (XmlDocument)(3,6): XML 検証エラー: 名前空間 'urn:nhibernate-mapping-2.2' の要素 'class' に名前空間 'urn:nhibernate の無効な子要素 'property' があります-mapping-2.2'. 予想される可能な要素のリスト: 名前空間「urn:nhibernate-mapping-2.2」の「meta、subselect、cache、synchronize、comment、tuplizer、id、composite-id」。---- System.Xml.Schema.XmlSchemaValidationException : 名前空間 'urn:nhibernate-mapping-2.2' の要素 'class' には、名前空間 'urn:nhibernate-mapping-2.2' に無効な子要素 'property' があります。予想される可能な要素のリスト: 名前空間「urn:nhibernate-mapping-2」の「meta、subselect、cache、synchronize、comment、tuplizer、id、composite-id」
Id automapper 規則を使用して、オーバーライド機能を使用してカスタム列を ID として設定するにはどうすればよいですか?
注:これは 1 つのエンティティのみです。一般的な ID マッピング規則を変更したくありません
。現在のオーバーライド関数は
nhibernate - Fluent Nhibernate で AutoMap を使用するエンティティの永続化機能はありませんか?
自動マッピングで FluentNHibernate を利用しようとしていますが、次のエラーが表示されます
関連するものは次のとおりです。
実在物
髪を引っ張っています。次の ClassMap を使用すると機能します。
このプロジェクトで AutoMap を使用して DB を駆動する機会があり、使用したいと思います - 手がかりはありますか?
c# - Fluent NHibernate (自動マッピング付き) が結合テーブルの値を多対多で保存しない
私は正確には NHibernate の専門家ではないので、これはその分野での理解が不足している可能性があります。多対多の関係を持つ 2 つの単純なエンティティがあります
と
私の構成は
そのため、オーバーライドなしで開始し(グーグルが提案した後に後で追加しました)、ExportSchemaでスキーマを生成しています。ExportSchema は結合テーブル ( ProductsToCategories
) を生成したため、(オーバーライドがなくても) 多対多の関係を認識しています。
簡単なテストデータを追加したかったので、このようにしました
これにより、製品とカテゴリが適切に保存されますが、結合テーブルの関係は保存されません。category.Products の呼び出しが生成する sql を見ると、実際にはその結合テーブルで製品を探しています (空であるため、何も見つかりません)。
どんな助けでも大歓迎です:-)
編集:逆を削除しましたが、まだ問題が発生しています:(
EDIT2:
カタログと製品のマッピング ファイルは次のとおりです (注: 名前はばかげていますが、これは簡単なプロトタイプのような取引です)。
interface - Fluent NHibernate の AutoMapper はインターフェイス型を処理できますか?
IDE を使用せずにこの単純化された例を入力したので、構文エラーは許してください。これを自動マップしようとすると、マッピングをコンパイルしようとすると FluentConfigurationException が発生します -
「関連付けはマップされていないクラスを参照してい
IEmployee
ます。」
これを解決すると、への参照にも遭遇したときに同様のエラーが発生すると思いますIEmployer
。ClassMap を手動で作成することに反対しているわけではありませんが、代わりに AutoMapper を使用することを好みます。
使ってみまし.IncludeBase<IEmployee>()
たがだめでした。これは、IncludeBase をまったく呼び出さなかったように動作します。
ドメインエンティティでインターフェイスを使用しないか、手動で定義された ClassMap にフォールバックする唯一の解決策はありますか?
どちらのオプションも、アプリケーションの設計方法に重大な問題を引き起こします。すべての機能の実装が完了するまで永続性を無視しました。この間違いは二度と繰り返されません :-(
c# - さまざまなアセンブリからの Fluent nhibernate automap サブクラス
私がする必要があるのは、抽象ページ クラスのサブクラスを自動マップすることです。(初期化段階で) ランタイムを取得するアセンブリのリストでそれらを見つける必要があります。マッピングのアセンブリからアセンブリへの参照がありません。
私のページクラスは次のようになります。
私のマッピングは次のようになります。
_assemblies は、マッピング可能なエンティティを検索するためのアセンブリのリストです。これには、ページ クラスのアセンブリと、基本アセンブリ (ページ クラスを持つアセンブリ) への参照を持つ 1 つ以上の他のアセンブリが含まれます。
ページ クラスから継承するクラスをページ クラスと同じアセンブリに追加すると、すべて正常に動作し、適切にマップされます。しかし、実行時にロードされる他のアセンブリの 1 つに 1 つを追加すると、問題が発生します。次のエラーが表示されます。
「すでに追加されている場合に、多対 1 の「ページ」を追加しようとしました。」
クラスを見つけますが、何らかの理由でそれをページまたは何かとしてマップしようとします。しかし、ページ クラスは既にマップされているため、そのエラーが発生します。それは私の推測です。これを何らかの方法で回避できるかどうかは誰にもわかりませんか?または解決策を知っていますか?
fluent-nhibernate - S#arp アーキテクチャで Table-per-class 階層を自動マップする方法
私は S#harp アーキテクチャと流暢な nhibernate にかなり慣れていません。テンプレートを使用してサンプル ソリューションを構築しようとしていました。次のドメインに対して MappingIntegrationTest を実行しようとすると失敗します
ParentMap は次のようになります。
マッピング統合テストが失敗する * データベースがデータベース メソッドで構成されていません。
----> NHibernate.MappingException : テーブルの親からの関連付けが、マップされていないクラスを参照しています: コンポーネント
これらのクラスを AutoMapper から削除する必要がありますか?
fluent-nhibernate - FluentNHibernateを使用してaspnet_Usersテーブルの一部をマップする方法
Fluent NHibernate 1.0 RTMでユーザーエンティティをマップして、NHibernateを介してASP.NETMVCアプリケーション内のUserIdとUserNameにアクセスできるようにしようとしています。
私は持っています:
これは、マップされる関連する列のみを含むaspnet_Usersテーブルを表します。これは、自動マッピングされていない唯一のエンティティです。これが私のマッピングです:
他のすべては、規則で自動マッピングされています。
これが私のPrimaryKeyConventionとTableNameConventionです。
マッピングプロセスは、ClassMapコード(すべての自動マッピングの前にあります)、TableNameConventionコード、PrimaryKeyConventionコードの直後に失敗します。instance.Propertyがnullであるため、失敗はPrimaryKeyConventionにあります。if(instance.Property!= null)を実行しようとしましたが、「必要な属性'クラス'がありません」というエラーでマッピングプロセスが早期に終了します。TableNameConventionにif(instance.EntityType!= typeof(User))もありましたが、違いがないときに削除しました。
ここで何が起こっているのですか?まず、AutoMappingプロセスがClassMapの規則を呼び出すのはなぜですか?次に、PrimaryKenConventionがinstance.Property == nullを渡されるのはなぜですか?これを機能させて、マッピングプロセスを進め、AutoMapping +規則を使用して残りのエンティティをマッピングするにはどうすればよいですか?
1.0 RTMのリファクタリングの前に、以前のバージョンのFNHでこれをすべて数か月間機能させていたことに注意してください。
nhibernate - 流暢な nhibernate automap バージョン列
私のコンベンションの現在のコード:
これは、RowVersion をバージョン列としてレンダリングしません。RowVersion を単なる別の列として扱います。
私の質問は、Fluent Nhibernate を使用して Row Version Concurrency をどのように追加するのですか?
fluent-nhibernate - 流暢なnhibernate:子エンティティを持つ新しいエンティティを保存するときのINSERTエラー
「リビジョン」リストに 1 つの項目を追加して、新しいエンティティ「投稿」を保存しようとしています。
APost
は複数の を持つことができPostRevisions
、 aPostRevision
は 1 つのみを持つことができますPost
。
PostRevisions をマッピングするいくつかの方法を試しました。私の PostRevisionMap は次のとおりです。
SaveOrUpate を呼び出すと、別のエラーが発生します
オプション 1 & 3 の原因
オプション 2 の原因
私の PostMap は次のとおりです。
問題を見つけることができないので、誰かが私を正しい方向に向けることができますか? ティア
nhibernate - 多対多のプロパティ「ユーザー」の反対側がどうあるべきかわかりません
ドメインの自動マッピングは機能していましたが、NHibernate スタックを更新すると、Session Factory が構成を構築しているときにマッピング例外が発生します。
「多対多のプロパティ 'Users' の反対側がどうあるべきかわかりません。」
多対多マップで例外がスローされる
全体のスタック トレースは次のとおりです。
c:\hornget.horn\orm\fluentnhibernate\Working-2.1\src\FluentNHibernate\Cfg\FluentConfiguration.cs:line 119 の FluentNHibernate.Cfg.FluentConfiguration.BuildConfiguration() で、WebApplication1.NHibernateManager.SessionFactoryManager.BuildConfiguration
(AutoPersistenceModel persistanceModel
)で
C:\WebProgramming\Projects\WebApplication1\WebApplication1\NHibernateManager\SessionFactoryManager.cs:116 行目 C:\WebProgramming\Projects\WebApplication1\WebApplication1\NHibernateManager\SessionFactoryManager.cs:71 行目のWebApplication1.NHibernateManager.SessionFactoryManager.GetSessionFactory (
) WebApplication1.NHibernateManager.SessionManager.CloseSession()
で
C:\WebProgramming\Projects\WebApplication1\WebApplication1\NHibernateManager\SessionManager.cs: C:\WebProgramming\Projects\WebApplication1\WebApplication1\Global.asax.csの
WebApplication1.Global.Application_EndRequest(オブジェクト送信者、EventArgs e) の47 行目: System.Web.HttpApplication.SyncEventExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() の 36
行 目 System.Web.HttpApplication.ExecuteStep (IExecutionStep step, Boolean& completedSynchronously)
問題は、自動マッピングを使用して多対多の関係を適切に処理する方法です。
注: マッピングは、NHibernate/FluentNHibernate スタックを更新する前に機能していました...
関連する定義を以下に貼り付けます。
ドメイン クラス (Dll 1 内):
エンティティ クラス (DLL 2 内):
規約:
多対多の規則:
モデル: