首先:我是 EF 新手,这只是为了测试 EF 的功能,看看它如何适应已经根据数据库表和对象模型设置的环境 - 以及当这两个模型不要在类名/表名和属性名/列名上,甚至表和类的数量上进行1:1的映射。如果您想回复:“EF 不应该以这种方式使用”,请记住“测试功能”。谢谢!:)
考虑以下场景。
我有三个数据库表:
|----------------| |-------------| |-----------------|
| 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 对象由 Message 表中的一行(以messageId作为键)和 MessageText 表中的一行(以messageId和languageCode作为键)组成。
ServiceMessageInstance 更简单:它具有对 ServiceMessage 对象的引用和一些附加属性。
我在 EF 上玩了一些,并进行了很多谷歌搜索,但我还没有找到我的问题的答案:我怎样才能用 EF 做到这一点?我应该采取哪种方法?我可以用 EDMX 设计器做到这一点吗?DbContext.OnModelCreating?
我意识到这可能有点过于“宽泛”的问题,但我会很感激任何指针!
谢谢。
BR,爱马仕