2012-02-08 42 views
7

我剛剛進入實體框架第一次超出簡單的例子。LINQ-to-Entities,具有相同列名稱的兩個視圖之間的關聯不明確的列名稱

我正在使用模型優先的方法,並用LINQ-to-Entities查詢數據源。

我已經創建了一個實體模型,我將其作爲OData服務公開爲一個數據庫,我不控制模式。在我的模型中,我有兩個基於該數據庫中兩個視圖的實體。我已經創建了兩個實體之間的關聯。兩個視圖都有一個同名的列。

我收到錯誤:

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

如果我在寫SQL語句我自己,我會限定列名的一個用別名來避免這個問題。 EF顯然沒有這樣做。我如何解決這個問題,改變視圖? (我不能這樣做)我認爲這與這些實體映射到視圖有關,而不是映射到實際表。

+2

發表一些代碼。 – cadrell0 2012-02-10 20:23:17

+0

請澄清,如果您使用的設計師模型或代碼第一。如果您使用的是設計師,只需將兩個視圖拖放到設計圖面上並添加關係即可輕鬆解決問題。在代碼中,它需要更多的工作。 另外,你是通過實體SQL查詢還是使用LINQ to Entities? – jessehouwing 2012-02-14 21:11:57

+0

@jessehouwing:我還沒有機會爲此收集代碼。我希望有人可能會偶然發現它,併產生一個「哦,我有這個問題之前」的迴應。我剛剛爲這個問題添加了一些額外的信息。我正在使用模型第一種方法,並且(如標題中所述)我正在使用LINQ to Entities。 – dotnetengineer 2012-02-14 21:26:15

回答

1

假設您可以更改模型,您是否試過進入模型並更改其中一個列名稱?如果兩個視圖從同一個表中拉回同一列,我仍然可以看到它可能有問題。我可以說,直接使用映射到表的模型時,具有相同名稱的列不是問題。即使對同一個表的多個關聯處理正確,導航屬性也會自動給出唯一名稱。根據您使用的EF版本,您應該能夠在模型下或t4模板文件下挖掘cs文件,並查看發生了什麼。然後,您可以隨時創建一個部分課程以將其彎曲成您的意願。

相關問題