entity framework:在关联中使用非主要唯一键的替代解决方案

我知道entity framework工作不允许您使用非主要唯一密钥作为外键关联从数据库生成模型。 我可以手动修改EDMX吗? 如果是这样,有人能为我提供一个例子或参考吗? 如果没有,还有其他可能吗?

最简单的例子:

这是表格的DDL。 你会注意到我有一个从PersonType.TypeCode到Person.TypeCode的外键

CREATE TABLE [dbo].[PersonType]( [PersonTypeId] [int] NOT NULL, [TypeCode] [varchar](10) NOT NULL, [TypeDesc] [varchar](max) NULL, CONSTRAINT [PK_PersonType] PRIMARY KEY CLUSTERED ([PersonTypeId] ASC) CONSTRAINT [UK_PersonType] UNIQUE NONCLUSTERED ([TypeCode] ASC) ) CREATE TABLE [dbo].[Person]( [PersonId] [int] NOT NULL, [TypeCode] [varchar](10) NOT NULL, CONSTRAINT [PK_Person] PRIMARY KEY CLUSTERED ([PersonId] ASC) ) ALTER TABLE [dbo].[Person] WITH CHECK ADD CONSTRAINT [FK_Person_PersonType] FOREIGN KEY([TypeCode]) REFERENCES [dbo].[PersonType] ([TypeCode]) ALTER TABLE [dbo].[Person] CHECK CONSTRAINT [FK_Person_PersonType] 

这是EDMX Generated

                                                                       

我试图修改EDMX以在personType和Person之间创建导航属性但是不成功。 我只是想我可以手动创建关联的一些方法。 任何帮助,将不胜感激。

不幸的是,截至目前,没有办法在候选键上定义关联(即PersonType.TypeCode )。 因为在EF(3.5和4.0)中,FK必须指向主键。

根据Alex James 的post ,这是EF团队正在为下一个版本考虑的事情。