2011-08-03 136 views
0

我有一個Model1.edmx,它有幾個表。現在,我不需要表TableA的所有列,所以我創建了另一個實體,並使用表映射將它與TableA映射。實體框架中的表映射

我在做同樣的事情時面臨着很多問題。我得到的是錯誤,

" Thier primary key may collide". 

如果我創建了FK協會,它說"Non-Primary-Key column(s) [XXX] are being mapped in both fragments to different conceptual side properties".

我不知道,如果我採用的方法是正確的,因爲實體集alraedy存在TableA的。

如果這是方法,那麼解決方案是什麼。

如果不是,我該走哪條路。

UPDATE:我確實刪除了不需要的屬性,而且我添加了TableA中其他FK表中的屬性。

現在我得到錯誤" Problem in mapping fragments starting at line 566:Must specify mapping for all key properties (TableAs.ID) of the EntitySet TableAs.

UPDATE我添加其他表的屬性,因爲他們是FK,我想從UI到另一張桌子幾列。這是一個很好的(或可能)方法或我應該創建類,然後把類的每個屬性手動 預先感謝

回答

0

您的意思是什麼:??

現在,我不希望所有的C表TableA的列,所以我創建了另一個實體並使用表映射將其與TableA映射。

不完全清楚。你的意思是說你只想處理TableA中的一部分列,並忽略應用程序中的其他地方的其他列。假設它們可以爲空(或有StoreGeneratedPropertyComputed),您可以在實體中單擊TableA並刪除它們。

您不能創建,除非你正在處理的table-per-層次結構的繼承,它聽起來並不像你感興趣的是被映射到TableA另一個實體。

+0

我不希望這列是內部的數據庫或開發目的。我只想公開可能用於UI(或用戶)的列。另外,我不確定「每個層次結構的功能」,你能詳細說明一下嗎?或者可能只是使用搜索引擎來幫助? – genericuser

+0

@Priya:你在說什麼與表繼承沒有任何關係,所以如果你有興趣瞭解它是什麼,只查看它;它不會幫助你解決這個問題。就像我上面所說的那樣,如果列可以爲空,那麼您可以簡單地從設計器中刪除列屬性。如果它們不是空的,那麼你不能刪除它們,因爲實體不能被保存。 –

+0

好的,我應該從實體或實體集中刪除它嗎?它不會影響任何crud操作?另外,有沒有辦法重新命名實體中的列? – genericuser