2011-12-22 8 views
0

次のシナリオでは、素敵な選択肢を待ち:SubSonic、ORM、edmx、Linq:シリアル化可能なDb通信?

  • .NETで書かれた中央のWindowsサービスは、バックグラウンドでデータベースを照会するようにクライアントを受け付ける(そしてまた、彼らは、DBに書き込むことができます)。
  • クライアントは互換性のために旧式の.NET Remotingを使用できる必要があります(またはWCFへの非常に簡単な移行が可能です)
  • 現在のクエリは、標準の命令(Insert、Update、SelectCommand )または文字列ベースの直接SQLクエリを使用しますが、Linqを使用するにはすべてのレコードをローカルクライアントに引き渡す必要があります
  • はOracleとMSSQLで動作します
  • イベントはデータが変更されたときにサーバーからクライアントに送信されます。テーブル - これは必須です!

これが主な要件です。今度はedmxでLinqへの移行を評価し始めましたが、柔軟性が失われる恐れがあり、Db処理コードのすべてを書き直す必要がありました。本質的な改良点は、ネットワーク上のLinqedバインドであり、.NET 4のEMFレイヤーに直接アタッチすることなくLinqクエリを使用できることです。そして、ORMの選択肢について調査を開始し、今すぐ亜音速に到達しました。

質問をするには:クライアントがエンティティに関するすべての知識を持っているが、照会transofrmationとDb接続が中央サーバ上でのみホストされるようにSubSonicを使用することは可能でしょうか?我々は、Dbイベント、複製、およびアプリケーションに必要な他の特定の機能のために、Dbへの直接アクセスを切り離したいと考えています。

よろしくフロリアン

プロジェクト、 InterLINQは、そのサーバ側で複数のクエリプロバイダと協力することのように、あなたはやや一般的な方法(一般に記述したものと同様の必要性を解決するために目指していたがあった
+1

なぜクライアントにエンティティの知識を持たせたいのですか(私はドメインエンティティを読んでいます)。このようなシナリオでは、(シリアライズ可能な)DTOで作業する方が一般的です。 –

+0

ここでのアイデアは、可能な限り連続性を持たせたいということです。つまり、あるクライアントまたはビジネスプロセスがDb内に新しい列を必要とするため、他の当事者はできるだけ機能を失うことなく再起動する必要はありません(たとえば、次のメンテナンスウィンドウまで)。これは、稼働時間はすべてです。すべての当事者がDbModelを更新する必要があるので、私はちょうど今 "生産中断"できません... – flohack

+0

データベースの変更がドメインクラスの変更を意味する場合(通常はそうします)、クライアントがエンティティを知りたいときにこの要件を維持することは困難です。列が追加されると、古くなったクライアントと適切な式変換から離れることがあります。しかし、列が削除されたらどうなりますか?それは価値があると私の意見:私はネットワーク境界を介してlinqを変換しようとしないが、代わりに仕様(+ DTOの)を使用します。 linqプロバイダの漏洩した抽象概念をより簡単に、より予測しやすく扱うことができます。 –

答えて

0

)。私はこのプロジェクトを一度も使ったことがなく、1年以上経っていないし、ドキュメンテーションが不足しているようだ。

私はSubSonicが他のどのLinqプロバイダよりもこれを達成するのが簡単ではないと思います。プロバイダーにとらわれない方法でクエリを表す式をシリアライズしようとするのはおそらく邪魔にならないでしょう。

+0

答えをありがとう、はい私は見てみました、それは問題を解決しようとするが、より多くの開発が必要と思われる。シリアライゼーションの場合:リソースやポインタはありますか?これは私たちが元々考えていたものですが、その部分は何も見つかりませんでした。 – flohack

+0

かもしれないhttp://expressiontree.codeplex.com/ –

0

あなたの質問は非常に広いです - 私は1つの小さな部分にしか答えることができません。

SubSonic ORM 3.0には、Linq to SQLトランスレータが含まれています。 LinqクエリはSQLに変換され、実際に使用する行だけがクライアントに返されます。この効果は、カスタムSQLを作成した場合とほぼ同じです。実際には、生成されたSQLを取得できます。

ほとんどの質問は範囲外です。単純なORMではなく、分散クエリ処理に関するものです。

+0

これに戻る。最終的に私たちはあきらめて、edmxモデルへの移行を検討しています。私たち自身の抽象レイヤーを作るのは単純すぎるだけです。しかし、おそらく私はまだこの翻訳者を見ています...ありがとう! – flohack

関連する問題