これは大きな質問です。私はサブドメインを使わなかったことを除いてこれをやったことがあります。別のURLを使っていましたが、同じコードとデータベースを使いました。私は、これをLINQとSQLコードとの間に少しずつしっかりと統合する方法が必要でしたが、それぞれにwhere句を入力する必要はありません。ここでは、私がやったことだ:SQLにLINQを持つテーブルを照会するとき
public static IEnumerable<T> GetDataByDomain<T>(
IQueryable<T> src) where T:IDbColumn
{
//1 == website1
//2 == website2
//3 == both
string url = HttpContext.Current.Request.Url.Host;
int i = url == "localhost"
|| url == "website1.com"
|| url == "www.website1.com" ? 1 : 2;
return src.Where(x => x.domainID == i|| x.domainID == 3);
}
は基本的に私は自分のカスタム句を持っています。
ので、同じように使用
:
私は1つのウェブサイト、またはその両方に対して指定するために必要なデータを持っていた各テーブルの最後に
using (var db = new MyDataContext())
{
var items = Utility.GetDataByDomain(db.GetTable<Item>()).Where(x => x.isVisible);
}
私は1,2または3の値を取り、列を追加しました(両方とも)。さらに、私のLINQのデータコンテキストで私は部分クラスを作って、私のインターフェイスを参照:
public partial class Item : Utility.IDbColumn
{
}
我々は最初の方法は非常に明らかに未知の型を取る、私はからプロパティを選択することはできませんので、以下のインタフェースがある必要がある理由私がそれに渡すどの型も、そのプロパティを含むインタフェースに依存していると言わない限り、未知の型です。
インタフェース:
public interface IDbColumn
{
int domainID { get; set; }
}
それは興味深いシステムのようなものだ、おそらく多くの異なった方法でそれを行っている可能性があります。しばらく前にそれを構築し、それは素晴らしい作品です。