我需要一个具有两个单独候选键的实体,其中一个是主键,它是代理身份键,另一个是表示真实唯一属性的备用键。我需要在我的实体中单独使用它们。请注意,我不是指复合键或多列键。无论如何,我需要在ADO.NET数据模型中的一个实体上拥有它。有可能吗?如果是,请指导我。
拥有第二个密钥的原因是我需要另一个实体与该密钥上的第一个实体建立关联(和外键)关系。
更新:我在以下问题中找到了与我非常相似的情况: http://social.msdn.microsoft.com/Forums/en/adodotnetentityframework/thread/a248632a-d305-4c15-8e57-6742457cca94 看来EF v1不支持此功能。有人知道V4(字面意思是第二个版本)是否具有此功能?我找到了以下内容,但它似乎没有显示此功能已添加到当前版本的任何线索:http://blogs.msdn.com/b/adonet/archive/2009/05/11/update-on-the-entity-framework-in-net-4-and-visual-studio-2010.aspx
答案 0 :(得分:4)
实体框架不支持唯一键。在实体模型中,您的第二个键将与其他任何键一样。您将无法在该密钥上创建关系,EF也不会检查该密钥的值是否唯一。但是,如果您的模型将基于具有唯一键的现有数据库,则您将对数据库层进行此检查。
EF团队已经暗示了对唯一密钥的支持,remains unavailable as of .NET 4.5。
答案 1 :(得分:0)
如果您使用Code First和流畅的API,创建两个单独的DbContexts可能是一个很好的解决方案。您可以为要在导航属性中使用的每个键编写单独的EntityTypeConfiguration类。我们在项目中遇到了这个问题,我写了一篇描述我们解决方案的博客文章:http://mmilleruva.blogspot.com/2013/10/working-with-legacy-database-schemas.html