3

これがうまく表現されていない場合はお詫びしますが、にアップグレードした後、EntityFramework5でVS2012/.NET 4.5テーブル値関数が可能であることがわかりました。

カスタムデータレイヤー/ormを使用していますが、EDMXモデルジェネレーターを使用しないコード例は見つかりません。これは役に立たないためです。

非常に野蛮な推測として、テーブル値関数を定義するいくつかのコードを追加する必要があると思いますOnModelCreating(DbModelBuilder modelBuilder)

助けていただければ幸いです。

4

3 に答える 3

6

テーブル値関数は、Code-First戦略ではサポートされておらず、EDMXを使用するDatabase-Firstでのみサポートされています:http://msdn.microsoft.com/en-us/hh859577。引用:

TVFは現在、DatabaseFirstワークフローでのみサポートされています。

于 2012-09-03T14:16:11.990 に答える
2

次のように、EF5を使用してテーブル値関数を簡単に実行できました。

int orderID = 100;
var query = context.Database.SqlQuery<Product>("Select * from [dbo].[tfn_GetOrderProducts](@p0)", orderID);
var results = query.ToList();

ここで、Productは、メンバー名がテーブル値関数の結果と一致する任意のPOCOクラスにすることができます。

これは完全なソリューションではありません。IQueryableを返さないため、これをより大きなLINQクエリの一部として使用することはできません。ただし、この場合、必要なのはそれだけでした。

于 2013-10-24T18:02:04.133 に答える
-1

次の提案は、このリンクhttp://blogs.msdn.com/b/adonet/archive/2011/06/30/walkthrough-table-valued-functions-june-ctp.aspxから削除されました。私はあなたに役立つかもしれないこの情報を見つけました。

コードファーストアプローチ

Entity Framework 2011年6月CTPには、TVFのCodeFirstサポートは含まれていません。ただし、TVFに対してDbContextを使用できます。これを行うには、DbContextテンプレートをモデルに追加します。テンプレートを追加する手順は次のとおりです。

  • NorthwindModel.edmxを開き、キャンバスを右クリックします
  • [コード生成アイテムの追加]をクリックします…</li>
  • ADO.NET DbContext Generator V4.2を選択し、テンプレートの名前を入力して、[追加]をクリックします
于 2013-05-02T03:22:04.133 に答える