2

アクセスしているデータベースが 2 つあります。1 つ目は、EF Model First を使用して接続した連絡先データベースに対するものです。edmx を作成します。それ以来、Entity Framework を使用するときに CODE First の利点を学び始めたので、同じプロジェクトで Code First の手法を使用して Product データベースを記述し、記述しているコードからデータベースを生成できるようにすることにしました。

すべてが正常にコンパイルされます。この問題は、ハーネスをヒットして製品データベースを作成し、テーブルの 1 つから値のリストを取得しようとしたときに発生します...

ProductLines プロパティ (以下の Line3) を列挙しようとすると、「「Core.Data.Account」の概念モデル タイプが見つかりませんでした」というエラーが表示されます。

1.    using (var ctx = new ProductDb())
2.    {
3.        var lines = ctx.ProductLines.ToList();
4.        this.litOne.Text = lines.Count.ToString();
5.    }        

いくつかの調査の結果、(名前空間に関係なく) 同じ名前の複数のエンティティが原因でこのメッセージが発生している可能性があるようですが、ProductDb コンテキストには「Account」という名前のものがありません。

Model First アプローチによって作成された OTHER コンテキストには、「Account」という名前のクラスがあります。しかし、それがどのように/なぜ違いを生むのでしょうか? それらはそれぞれ異なるデータベース、つまり異なる接続文字列を指しています。ProductDb は、その存在をまったく認識していないはずなのに、Account というテーブルを作成しようとするのはなぜでしょうか?

考え?

いつもありがとうございます!, -G

4

1 に答える 1

1

私は同じ問題に遭遇しましたが、その逆です。最初に DbContext + 生成されたデータベースを生成し、次にデータベースから edmx を生成しました (ちょっとしたプレゼンテーションのためだけに)。EF の制限のようです: EF には現在、EF 属性を持つクラスを含むアセンブリから POCO クラスを読み込むことができないという制限があります

現時点でできることは、コンテキストを別々のアセンブリに保持することだけです。

于 2012-06-27T21:11:48.917 に答える