我有這樣的數據庫結構:實體框架,TPT繼承和多語言支持
服務
- ID INT PK
- 類別編號FK
- SomeOtherFields
LocalizedService
- LocalizedServiceId PK
- LanguageId FK
- 名稱
- 說明
正如你所看到的,我有一個叫做服務基地臺,以及LocalizedService表,其中我編寫多語言數據,如名稱和描述,應該用不同的語言翻譯。 我已經使用TPT繼承鏈接了EF設計器中的兩個表。 Service是LocalizedService的基類。問題是,TPT要求兩個表都有主鍵,如果我使用1種語言,這不會成爲問題,但我應該翻譯3種不同語言的服務行。因此,只有LocalizedServiceId不應該是唯一的,但是LocalizedServiceId + LanguageId的組合應該是唯一的,因爲我無法在LocalizedService中插入多個語言行。例如,看看LocalizedService行波紋管:
- 1,1,SomeService,NULL < - 插入
- 2,1,AnotherService,NULL < - 插入
- 2,2,RussianTranslationService ,NULL < - 無法插入,因爲表中已存在值爲2的LocalizedServiceId。
這不是在DB端的問題,我可以創建多個字段PK(例如,LocalizedServiceId和LanguageId都將是主鍵),但在這種情況下,EF設計師拋出錯誤說: 「錯誤13錯誤75:密鑰用法無效uPay.Data.Entities.LocalizedServiceRecord無法定義密鑰,因爲它的一個基類(uPay.Data.Entities.ServiceRecord)定義密鑰D:\ Projects \ uPay \ uPay.Data.Entities \ Entities.edmx 1531 9 uPay.Data.Entities「。我真的很需要這個問題的解決方案,你的幫助將非常感激。