首先:我是一個EF新手,這只是爲了測試EF的功能,並看看它如何適用於環境已經根據數據庫表和對象模型設置 - 並且當這兩個模型在類名/表名和屬性名/列名,以及表和類的數量上沒有映射1:1時。如果您想要回復這個問題,請記住「測試功能」:「EF並不意味着以這種方式使用」。謝謝! :)使用EF與現有數據庫和域/對象模型不是1:1
請考慮以下情況。
我有三個數據庫表:
|----------------| |-------------| |-----------------|
| MessageLog | >---1 | Message | 1---< | MessageText |
|----------------| |-------------| |-----------------|
| logId | | messageId | | messageId |
| messageId | | type | | languageCode |
| from | | ... | | text1 |
| to | |-------------| | text2 |
| ... | | ... |
|----------------| |-----------------|
,我想映射到兩個類:
|--------------------| |----------------------------|
| ServiceMessage |<-\ | ServiceMessageInstance |
|--------------------| | |----------------------------|
| Id: string | | | Id: string |
| LanguageCode: str. | \----| Message: ServiceMessage |
| Text1: string | | From: DateTime |
| Text2: string | | To: DateTime |
| Type: MessageType | |----------------------------|
|--------------------|
ServiceMessage對象包括從消息表中的一行(有MESSAGEID爲鍵)和MessageText表中的一行(使用messageId和languageCode作爲鍵)。
ServiceMessageInstance更簡單:它具有對ServiceMessage對象的引用以及一些附加屬性。
我已經和EF玩了一下,做了大量的谷歌搜索,但是我還沒有找到我的問題的答案:我如何才能在EF上實現這個目標?我應該採取哪種方法?我可以用EDMX設計師來做這件事嗎? DbContext.OnModelCreating?
我意識到這可能有點太「寬」了一個問題,但我會很感激任何指針!
謝謝。
BR, 的Herms
對於ASCII風格對象/數據庫模型+1:D – Carsten 2013-02-21 15:19:14
它是實體分割和TPH繼承(其中'languageCode'充當判別器)的合併。我不認爲這是可以做到的。 – 2013-02-25 08:35:44