1

最近、データベースに7つのビューを追加しました。そのデータベースのデータモデルを含むプロジェクトに移動し、リバースエンジニアリングコードファースト(EF 4.3.1)を使用すると、いくつかのビューが生成されません。

最初は、他のビューに依存していたいくつかのビューが何らかの理由で順序が狂っており、プロセスに影響を与えている可能性がある、ある種の順序の問題があると思いました。ビューの名前を変更して、SQL ServerManagementStudioで必要な順にアルファベット順に表示されるようにしました。

これは役に立たなかったようです。

生成される5つのビューは、実際にそこにある必要がある最初の5つのビューです。ただし、最後の2つのビューは、生成されていないビューです。

最初の3つを除くすべてのビューには、他のビューの結合が含まれているため、結合が問題になることはないと思います。

ただし、欠落している両方のビューに集計(SUMおよび適切なGROUP BY関数)が含まれているように見えますが、最初の5つには含まれていません。

いくつかの検索を行いましたが、リバースエンジニアリングコードファーストに関して集計関数に制限があることはどこにも見当たりません。この問題の回避策はありますか?

更新

新しいプロジェクトを作成し、独自の複雑な既存のデータベースを使用する代わりに、Adventureworksを使用してみました。私がそれをリバースエンジニアリングしたとき、集計を含むビューは実際にEFによって適切にモデル化されました。

このビュー(Sales.vSalesPersonSalesByFiscalYears)を見ると、すべての集計がピボットを使用して行われていることがわかりました。そこで、代わりにピボットを使用するために集計を使用するビューを書き直しました。それらはまだインポートされません。

4

2 に答える 2

1

リバースエンジニアリングコードには、私が完全には理解していない奇妙なキー検出ロジックがいくつかあります。これらのビューのエンティティキーを検出できなかった可能性があります。

別のプロジェクトで、 database-firstを使用してリバースエンジニアリングを試してください。リバースエンジニアリングのロジックは同じであり、ビューをマッピングできなかった理由についてより多くの洞察が得られる可能性があります。

他のすべてが失敗した場合は、それらのビューにマップするCodeFirstクラスをいつでも手動で作成できます。msdn.com/data/efサイトには、Code Firstのデフォルトの規則に関する優れた記事のほか、POCOクラスをデータベースにマップするために使用できるデータアノテーションと流暢なAPI(プロパティとタイプまたは関係用)があります。

于 2013-01-22T23:57:15.267 に答える
0

理由はビューにあり、テーブルにIdentity列の列がありませんでした。テーブルのキー列をビューに追加すると、リバースエンジニアリングによって認識されます。それは私にとってはうまくいきます。

于 2013-08-07T00:30:50.980 に答える