4

ウィキやフォーラム、ブログソフトウェアなどのWebアプリケーションでは、データをリレーショナルデータベースに保存すると便利なことがよくあります。多くのホスティング会社は、ホスティングプランを備えた単一のデータベースを提供しているため(追加のデータベースには追加料金がかかります)、データベースオブジェクト(テーブル、ビュー、制約、およびストアドプロシージャ)に共通のプレフィックスがある場合にユーザーにとって非常に便利です。データベースの不足を認識しているアプリケーションでは、ハードコードされたテーブルプレフィックスを使用するのが一般的です。しかし、もっと欲しいです。具体的には、ユーザーが指定できるテーブルプレフィックスが必要です。たとえば、web.configファイル(もちろん、適切なデフォルトを使用)に指定できます。

CRUD操作を手動でコーディングするのは嫌いなので、有能なOR / Mを使用して作業することを好み、LINQ to SQL、Subsonic、およびADO.Netを使用(および楽しんだ)しています。しかし、ユーザーのweb.configファイルにテーブルプレフィックスを配置することになると、新しいプロジェクトで多少の問題が発生します。このシナリオをエレガントに処理できる.NetベースのOR/M製品はありますか?

これまでに思いついた最善の方法は、外部マッピングファイルを使用してLINQ to SQLを使用することです。このファイルは、まだ架空のweb.config設定に基づいて何らかの方法で更新する必要があります。

誰かがより良い解決策を持っていますか?Entity Frameworkでそれを実現しようとしましたが、すぐに混乱しました。(EFに慣れていないためですか?おそらく。)SubSonicはどうですか?コード生成時以外にテーブルプレフィックスを適用するオプションはありますか?

4

3 に答える 3

2

Entity Framework と LINQ to SQL の両方でこれを行うには何が必要かを調査し、それぞれに必要な手順を文書化しました。ここでの回答よりもはるかに長いので、ここで複製するのではなく、回答へのリンクに満足します。それぞれに比較的複雑ですが、LINQ to SQL はより柔軟なソリューションであり、実装も最も簡単です。

于 2008-08-28T14:49:41.663 に答える
1

LightSpeedを使用すると、実行時にテーブル名を動的に解決できるINamingStrategyを指定できます。

于 2008-08-14T23:04:50.530 に答える
1

テーブルプレフィックスを使用するのではなく、schema(MS Sql 2005以降の)に属するアプリケーションユーザーを使用します。

これは、次の代わりに次のことを意味します。

select * from dbo.clientAProduct
select * from dbo.clientBroduct

あなたが持っている:

select * from clientA.Product
select * from clientB.Product
于 2008-08-15T08:56:02.473 に答える