2012-02-08 12 views
7

単純な例を超えて初めてEntity Frameworkに取り掛かりつつあります。LINQ-to-Entities、同じ列名を持つ2つのビュー間の関連付けがあいまいな列名

私はモデルファーストアプローチを使用しており、LINQ-to-Entitiesを使用してデータソースをクエリしています。

私はスキーマを制御しないデータベースに対してODataサービスとして公開するエンティティモデルを作成しました。私のモデルでは、このデータベースの2つのビューに基づいて2つのエンティティがあります。私は2つのエンティティ間の関連付けを作成しました。どちらのビューにも同じ名前の列があります。

私はエラーを取得しています:

Ambiguous column name 'columnname'. Could not use view or function 'viewname' because of binding errors.

私は、SQL文を自分で書いていた場合、私はこの問題を防ぐために別名で列名のいずれかを修飾すると思います。 EFは明らかにそうしていない。どのように私はこれを修正するには、ビューの変更の短い? (これはできません)実際の表にマッピングされるのではなく、これらのエンティティがビューにマップされることと関連があると思います。

+2

いくつかのコードを投稿してください。 – cadrell0

+0

デザイナーのモデルやコードを使用しているかどうかを明確にしてください。デザイナーを使用している場合は、両方のビューをデザインサーフェイスにドラッグしてリレーションを追加するだけで簡単に解決できます。コードでは最初にいくつかの作業が必要になります。 また、Entity SQLを介してクエリを行っているのですか、またはLINQ to Entitiesを使用していますか? – jessehouwing

+0

@jessehouwing:私はまだこのためのコードを集める機会がありませんでした。私は誰かがそれに遭遇し、 "ああ、私はその前にその問題を抱えていた"という反応を生み出すことを望んでいる。私はちょうど質問にいくつかの追加情報を追加しました。私はモデルの最初のアプローチを使用しています。(タイトルで指定されているように)LINQ to Entitiesを使用しています。 – dotnetengineer

答えて

1

モデルを変更できるとしたら、モデルに入り、列名の1つを変更してみましたか? 2つのビューが同じテーブルから同じ列を引き戻している場合、どのように問題になるかはまだ分かります。テーブルにマップされたモデルで直接作業するとき、同じ名前の列を持つことは問題ではないことがわかります。同じテーブルに対する複数の関連付けが正しく処理されていても、ナビゲーションプロパティには自動的に一意の名前が与えられます。使用したEFのバージョンに応じて、モデルの下またはt4テンプレートファイルの下でcsファイルを調べて、何が起こっているかを確認することができます。その後、あなたはいつもあなたの意志にそれを曲げる部分クラスを作成することができます。

関連する問題