5

我试图首先使用流利的代码配置来强制执行列的唯一约束。有没有比在业务逻辑中实现它或使用类似下面的方法更好的方法

context.ObjectContext.ExecuteStoreCommand("CREATE UNIQUE CONSTRAINT...");

或者我想知道是否不可能使用流畅的配置来实现独特的约束?

编辑 :

已确认这对于流畅的配置是不可能的。但话又说回来,我想知道最好的方法是什么?并且想知道 EF 不支持这一点的原因。

4

4 回答 4

2

在此示例中,您可以看到如何定义唯一键属性并在任何实体中使用它。

http://code.msdn.microsoft.com/windowsdesktop/CSASPNETUniqueConstraintInE-d357224a

于 2013-07-05T09:28:49.243 回答
1

我之前也出现过这个问题

它无法使用 fluent API 实现唯一约束。</p>

所以,你使用的方式是正确的!

于 2013-03-18T13:12:33.497 回答
1

这可以通过 DbMigrations...

public override void Up()
{
    CreateIndex("dbo.MyTableName", "MyColumnName", unique: true); 
}
于 2014-02-13T19:16:51.083 回答
1

可以使用自定义扩展方法来完成:

using System.ComponentModel.DataAnnotations.Schema;
using System.Data.Entity.Infrastructure.Annotations;
using System.Data.Entity.ModelConfiguration.Configuration;

internal static class TypeConfigurationExtensions
{
    public static PrimitivePropertyConfiguration HasUniqueIndexAnnotation(
        this PrimitivePropertyConfiguration property, 
        string indexName,
        int columnOrder = 0)
    {
        var indexAttribute = new IndexAttribute(indexName, columnOrder) { IsUnique = true };
        var indexAnnotation = new IndexAnnotation(indexAttribute);

        return property.HasColumnAnnotation("Index", indexAnnotation);
    }
}

在此处查看完整答案:https ://stackoverflow.com/a/25779348/111438

于 2014-09-11T04:59:50.867 回答