2009-03-28 13 views
3

私のプロジェクトでは、多くのテーブルがApplicationId外部キーによってaspnet_Applicationテーブルにリンクされています。私は、ユーザーがそれを表示または編集することを望んでいないので、挿入クエリが実行される前にこのsqlテーブルフィールド値をプリセットする方法を探しています。私はまだこの列(適切なSQLスクリプトを生成するDD)のために有効になっている足場を持っていますが、私はすべての編集/リスト/挿入ページでこの列/フィールドを隠しています。動的データのサービスフィールド値を設定

理想的には、LinqToSqlクラスの任意のテーブルに対してDynamicInsertが実行される直前に、自分のコードを挿入する場所を探しています。

ありがとうございました

答えて

2

だから私は受け入れられる解決策を考え出しました。自分のデータコンテキストの部分クラスを作成し、aspnet_Applicationsにリンクされているすべてのテーブルに対して、部分的にInsert_メソッドを追加しました。どのメソッドでも、私はApplicationIdフィールドを現在のアプリケーションIDに設定しました。

それは次のようになります。この方法でいるときに、他のLINQ文を実行することはできません

public partial class MyDataContext 
{ 
    partial void InsertMyTable(MyTable instance) 
    { 
     instance.ApplicationId = HttpContext.Current.Session["ApplicationId"] as Guid?; 
    this.ExecuteDynamicInsert(instance); 
    } 
} 

注意。特に、aspnet_Applicationsテーブルを照会するのではなく、セッションにアプリケーションIDを格納する必要がありました。最善の解決策は、のDomainServiceパーツを用いることであろう将来的には

これはそれが完璧ではありません受け入れ可能な解決策(反復コードの多く)であるので、誰もがより良い知っている場合、ここで私の骨を投げながら:)

0

ちょうどMIX09で解放の.Net RIA Servicesのプレビューがここにあった動画を参照してください。

​​

Microsoft ASP.NET 4.0 Data Access: Patterns for Success with Web Forms

を最初はRIAを.NETにintrolですServices of Silverlightしかし、それ以上のものはDDに適用されています.2番目はMIXでのDavid Ebboのプレゼンテーションで、DomainServiceがDDでどのように機能するかを示しています。

関連する問題