2

I have to define a custom function in my DB to calculate the "validity end date" of an entity. This function will be used in a stored procedure, but I need the same logic in a web app.

I'm using Linq-to-sql to connect to my DB and to map tables to classes. So I'm wondering if there is a way to reuse the function defined in my DB. I'd like to extend my entity by a partial class. Do I have to rewrite the logic in my code?

NOTE I need to use function and not stored procedure in my C# code.

4

4 に答える 4

1

Linq-to-Sql によって SQL Server DB で定義された関数を呼び出すことができることがわかりました。

関数オブジェクトをdbmlコンテキスト ファイルにインポートしました。したがって、次の方法で呼び出すことができます。

context.fn_my_db_function(param1, param2, etc);

単純!

于 2013-04-24T14:33:15.787 に答える
0

ストアド プロシージャを作成し、DBML デザイナーでそれをメソッド ペインにドラッグできます。これにより、戻り値の型と入力が自動的に検出され、コンテキスト インスタンスを介して公開されます。必要に応じて、Visual Studio の [プロパティ] ビューを使用して、戻り値の型をテーブル モデル、またはカスタム定義のモデルなどにマップできます。

これは、C# の関数と同じように呼び出されます。たとえば、次のようになります。

using (var context = new MyDataContext()) {
  var result = context.MyStoredProcedure(input);
}

どこresultにマップされたマネージド型inputがあり、必要なパラメーター引数になります。

于 2013-04-24T08:32:57.600 に答える
0

コード内のロジックを書き直す必要がありますか?

データベースに実行させたい場合(疑似):

public static YourReturnType Calculate(this TEntity foo)
{
    return database.ExecuteFunction("calculate", foo);
}

すべての計算でデータベースのラウンドトリップが必要ない場合は、そうです。C# でロジックを書き直す必要があります。

于 2013-04-24T08:33:56.927 に答える
-1

これは Entity Framework で可能です。参考までに、このリンクを参照してください。

ストアド プロシージャをマップし、アクセス get メソッドを作成するだけです。

ただし、データベースで作成したプロシージャを実行したいだけの場合。. このリンクを参照してください。

于 2013-04-24T08:38:18.207 に答える