3

私のプロジェクトでは、多くのテーブルがApplicationId外部キーによってaspnet_Applicationテーブルにリンクされています。ユーザーに表示または編集させたくないので、挿入クエリを実行する前に、このSQLテーブルフィールドの値を事前設定する方法を探しています。(DDが正しいSQLスクリプトを生成するために)この列に対してまだスキャフォールディングを有効にしていますが、すべての編集/リスト/挿入ページでこの列/フィールドを非表示にしています。

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

ありがとう

4

2 に答える 2

2

そのため、いくつか掘り下げた後、許容できる解決策を思いつきました。データ コンテキストの部分クラスを作成し、 aspnet_Applicationsにリンクされているすべてのテーブルに部分Insert_メソッドを追加しました。すべてのメソッドで、ApplicationIdフィールドを現在のアプリケーション ID に設定しました。

次のようになります。

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

このメソッド内では、他の LINQ ステートメントを実行できないことに注意してください。特に、 aspnet_Applicationsテーブルをクエリするのではなく、アプリケーション ID をセッションに格納する必要がありました。

これは許容できる解決策ですが、完璧ではありません (多くの繰り返しコード)。

于 2009-03-29T04:07:52.570 に答える