【发布时间】:2011-04-24 08:55:35
【问题描述】:
我有这个数据库结构:
服务
- Id int PK
- 类别 ID FK
- SomeOtherFields
本地化服务
- LocalizedServiceId PK
- LanguageId FK
- 姓名
- 说明
如您所见,我有一个名为 Service 的基表和一个 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
这在 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”。我真的需要尽快解决这个问题,非常感谢您的帮助。
【问题讨论】:
标签: c# sql-server entity-framework ado.net