1

すべてのドメイン ロジックとデータ レイヤーを備えた DLL である、自己完結型サービスの構築に関するベスト プラクティスのアドバイスを探しています。オーチャードなどのオフ ザ セルフ CMS を使用し、サービスと対話して CRUD 操作を実行したいと考えています。サービスには独自の IOC と ORM が必要です。この場合、Ninject と Entity Framework を使用しています。この設計では、CMS とは別のデータベースを用意し、必要に応じて他の CMS システムに移植できます。

CMS はサービスを開始し、接続文字列またはファイル名を渡します。orchard を使用する場合、ORM と IOC フレームワークが異なるため、Ninject と Entity Framework をサービス内に保持する必要があります。

DbConext とドメインがサービス DLL にある実験をセットアップし、コンソール アプリから呼び出します。これは、コンソール アプリケーションでエンティティ フレームワークを参照している場合にのみ機能しますが、その dll では使用しません。コンソール アプリで EF が参照されていない場合のエラー メッセージを次に示します。

'System.Data.SqlClient' ADO.NET プロバイダーの Entity Framework プロバイダーが見つかりません。

これはなぜですか? また、設計上の問題を解決するにはどうすればよいですか?

4

1 に答える 1

0

ライブラリ (DLL) が Entity Framework に依存している場合、アプリケーションで両方を参照する必要があるのはまったく普通のことです (コンソール、Web、またはその他のもののいずれであっても)。常にすべての依存関係を参照する必要があります。

カスタム ライブラリを Orchard に接続するのは非常に簡単です。Orchard 側で行う必要がある唯一のことは、ライブラリからのサービスを Autofac に登録して、依存関係の挿入に使用できるようにすることです。この投稿では、あなたと同様のシナリオについて説明します。

Orchard <= 1.6 では、複数のデータベース接続を使用するのは少し面倒です。これは、TransactionScopeすべてのカスタム データベース コードを抑制されたスコープで実行する必要があるためです。そうしないと、トランザクション エラーや MSDTC が発生する可能性があります。 -関連の問題。約 1 週間で到着予定の Orchard 1.7 以降は問題ありません。新しいバージョンを待つことを強くお勧めします。1.xブランチからプレリリース コードを取得することもできます。

于 2013-06-17T12:08:59.830 に答える