2013-01-06 68 views
7

C#からF#に、SqlEntityConnection型プロバイダを使用して、かなり簡単なアプリケーションを書き直そうとしています。 CLR型からEDM型へのマッピングはあいまいです。これは、それぞれが同じ名前のテーブルを持つ2つのSqlEntityConnectionを開くことによって発生します。SqlEntityConnectionを使用すると、CLR型からEDM型へのマッピングがあいまいです

しかし、この場合は、型プロバイダによるEFが明らかにシステムテーブルをマッピングしているためです。実際のエラーは、dtpropertiesテーブル参照 -

{ "指定されたスキーマが有効でないエラー:EDM型にCLR型の\ R \ nのマッピングを複数CLRタイプがEDMタイプ『dtproperties』と一致するので曖昧です。以前は新たに発見されたCLRタイプ「SqlEntityConnection1.dtproperties」、CLRタイプ「SqlEntityConnection2.dtproperties」になっています。 "}

どのように私は、このテーブルがマップされて変更できますか?ありがとう。

(これはまた、EFを使用して、元のC#バージョン、の問題ではありません。)

+0

タイププロバイダがタイプを生成するテーブルをフィルタリングする方法はわかりません。プロジェクトに2つのSqlEntityConnection派生型が必要な場合は、まずそれらを異なる名前空間に配置します。それが助けにならないなら、あなたはいつも "dtproperties"テーブルを削除することができると思います... –

+0

@JoelMuellerありがとう、私は別の名前空間を試してみましたが、それは違いを生じさせないようです。残念ながら、DBAを怒らせることなくdtpropertiesを削除することはできません。 : – rachel

+1

"dtproperties"を見る権限のないユーザーの資格情報でデータベースに接続できますか? –

答えて

2

あなたはPOCOを使用して、同じタイプの名前の2つのタイプがありますされているからです。 EFは名前空間を無視します。したがって、同じ名前で異なる名前空間を持つ2つの型はEFではあいまいです。 (http://entityframework.codeplex.com/workitem/483

+0

SqlEntityConnectionは厳密にはデータベース優先です。 POCOが関与している可能性はありません。 –

+0

そうです、私はこの問題を認識しています。しかし、この場合、EF(型プロバイダを介して)がシステムテーブルをマッピングしており、それがエラーの原因です。この表のマッピングを停止するにはどうすればよいですか? – rachel

+0

@JoelMueller - これは真実ではありません。 VS2010のデフォルトコードジェネレータはEntityObjectを生成しますが、VS2012ではPOCOを生成します。 VS2010の場合でも、データベースファーストのPOCOタイプを生成するPOCO T4テンプレートを使用することができます。 – Pawel

関連する問題