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团队正在为下一个版本考虑的事情。
- 在过滤CollectionViewSource期间保留SelectedItem
- System.MethodAccessException,CAS和Visual Studio调试器
- 如何在C#中获取网络摄像头图像?
- IIS抱怨使用LDAP身份validation进行身份模拟
- System.Runtime.Caching中是否存在某种CacheDependency?
- 如何在WebClient.DownloadFileAsync上实现超时
- Application.GetContentStream为内容Uri返回null
- 代码契约:我们是否必须在委托方法中冗余地指定Contract.Requires(…)语句?
- static constructors和BeforeFieldInit?