2012-04-24 34 views
0

我正在使用Oracle數據源,只讀數據,而不是寫數據,我可以而不是在數據庫上修改任何東西。EF4:使用同一個表兩次

想象一下這個2表的場景,一個課程表和一個備忘錄表。

該課程表有2個鏈接到備忘錄(MemoId)表。

所以......

課程表 CourseId 標題 SummaryNarrationMemoId PreCourseInformationMemo

MemoToString表 MemoId MemoData(二進制)

所以課程表連接到備忘錄表兩次,原因不同。

我看不起EF繼承路線使用同一個表兩次,使用備忘錄表爲基礎,並創造PreCourseMemo和SummaryNarrationMemo,但拋出的構建這些錯誤:

我更新了模型添加這兩個表格的模型。 TwoTablesInEF

錯誤3005:從第613行開始映射片段時出現問題:必須爲Set MemoToStringTables中的所有類型指定映射。 將實體與密鑰(PK)不會往返時: 實體是鍵入[MyModel.MemoToStringTable]

錯誤3005:問題在映射片段起始於線613:必須在集MemoToStringTables所有類型指定映射。 將實體與密鑰(PK)不會往返時: 實體是鍵入[MyModel.PreCourseMemo]

錯誤3005:問題在映射片段起始於線613:必須在集MemoToStringTables所有類型指定映射。 的實體鍵(PK)時不會往返: 實體是鍵入[MyModel.SummaryNarrationMemo]

我知道我可以創建每個數據庫視圖,但感覺不對。 :(任何想法?

回答

0

如果我正確地理解你的問題,它將無法正常工作您正在試圖將繼承映射到備註表,但要做到這一點你備註表必須包含特殊鑑別器列,這將告訴EF是否是PreCourseMemo or SummaryNarrationMemo。你不能僅僅通過關係來區分這些類型

+0

這只是我試過的方法之一,我是在關於如何使用這張表兩次的建議之後 – 2012-04-24 10:35:00

+0

你不能。 EF不允許映射表兩次,除非有效使用TPH繼承與鑑別器列或表分割不會解決您的問題。 – 2012-04-24 10:36:14

相關問題