0

アプリケーションに 2 つのプロジェクト (階層) があります。1 つはmyApplication、もう 1 つは ですmyApplicationLib

私は層にすべてのフォームを持っておりmyApplication、ビジネスクラスを層に書いていmyApplicationLibます。ここで、 LINQ とストアド プロシージャを使用して、myApplicationフォームから SQL Server に値を挿入したいと考えています。myApplicationLib

ある層から別の層に DataContext でストアド プロシージャを呼び出すにはどうすればよいですか?

私を助けてください。前もって感謝します

4

3 に答える 3

1

データ アクセス/ビジネス ロジックをプレゼンテーションから抽象化するために、myApplicationLib はすべてのデータ アクセス (コンテキストと LINQ を含む) をラップし、メソッドを介してエンティティ/モデル/DTO を公開します。たとえば、製品の表にアクセスして Web フォームに表示する必要がある場合は、次のことができます。

  • myApplicationLib 内の製品のリストを返す GetCategoryProducts というメソッドを作成します (ここでストアド プロシージャを呼び出すか、LINQ を使用します)。

  • myApplication で myApplicationLib を参照する

  • myApplicationLib で GetCategoryProducts メソッドを呼び出し、myApplication の Web フォームに表示します (必要に応じて、返された製品のリストで LINQ を使用できます)。

これに使用される一般的な設計であるリポジトリ パターンを調べることをお勧めします。

于 2013-01-07T05:36:25.533 に答える
0

1. Application Form の値を ApplicationLib オブジェクトの必要なプロパティに割り当てます。 2. LINQ エンティティを作成します。 3. ExecuteMethod を呼び出します。

明らかに、前述のように物事は単純ではないかもしれませんが、それはあなたを始めるのに役立ちます. 詳細はこちら

于 2013-01-07T05:36:36.527 に答える
0

このようなメソッドを作成してデータレイヤーに配置するか、ビジネスから呼び出すことができます。

     public bool CallSp(string command, params object[] parameters)
        {
            int i;
            string com = command + " ";
            for (i = 0; i < parameters.Count() - 1; i++)
            {
                com += string.Format("{{0}} ,", i);
            }
            com += string.Format("{{0}}", i);

            //ctx is the datacontext
            //EF5
            ctx.Database.ExecuteSqlCommand(com, parameters);
            return true;
        }

        CallSp("exec SP", p1, p2, p3,...);
于 2013-01-07T05:44:26.210 に答える