是否实体框架5支持唯一约束?(Does Entity Framework 5 support uni

2019-06-26 18:31发布

想知道如果实体框架5支持的实体属性唯一约束? 如果是这样,我怎么可以指定一个属性应该是唯一的?

Answer 1:

不,没有。 有在过去的计划包括在EF 5.0中的唯一约束功能:

http://blogs.msdn.com/b/efdesign/archive/2011/03/09/unique-constraints-in-the-entity-framework.aspx

但是你可以看到有关于该职位的顶部的更新:

更新:此功能已被推迟,将不会被包括在实体框架5。

您可以在功能投票可能提高其获取与实现优先级...

http://data.uservoice.com/forums/72025-entity-framework-feature-suggestions/suggestions/1050579-unique-constraint-ie-candidate-key-support

......因为很明显它甚至不是在目前的路线图EF 6.0:

http://entityframework.codeplex.com/wikipage?title=Roadmap



Answer 2:

嗯,我一直在寻找解决方案,终于让我找到它。 当你生成代码迁移,你可以创造出独特的键

 CreateTable(
                "dbo.TaBLE",
                c => new
                    {
                        Id = c.Int(nullable: false, identity: true),
                        Date = c.DateTime(nullable: false),
                        Meter_Id = c.Int(),
                    })
                .PrimaryKey(t => t.Id)

                .Index(t => new {t.Meter_Id, t.Date}, true);

验证之前插入你可以在BLL水平做的,所以我认为它可以解决你的问题。



Answer 3:

而唯一约束仍没有EF(6.0版本写这篇文章)支持开箱即用的,也有一些变通办法代码优先的方法来获得所需的行为。 看到一个基于属性的解决方案 ,作为回答类似的问题。 工程与EF 5.0+。

编辑:

与EF 6.1唯一索引起的支持

[Index(IsUnique = true)]
public string EmailAddress { get; set; }

他们是一样的唯一约束最实用的目的 。



Answer 4:

正如上面提到的,不支持,但至于现在,当我创建编程数据库(代码第一次)我用在init DB部分下面的代码:

MainDBContext mainDBContext = new MainDBContext();

mainDBContext.Database.ExecuteSqlCommand("ALTER TABLE table_name ADD CONSTRAINT uc_FieldName UNIQUE(FieldName)");

mainDBContext.Dispose();


Answer 5:

我为了实现对实体属性唯一约束找到一个变通。 这真是直观。 请参考我的另一篇:

https://stackoverflow.com/a/16496291/1873113



文章来源: Does Entity Framework 5 support unique constraints?