Обеспечение уникальных значений в Entity Framework 7

Я использую Entity Framework 7 (бета-версия). Я хочу ограничить значения в поле, чтобы нельзя было добавить дубликаты. В EF6 была разметка Index, которую можно было использовать так:

public class MyEntityClass
{ 
    [Index(IsUnique = true)]
    [MaxLength(10)]
    public string MyUniqueProperty{ get; set; } 
}

К сожалению, этого атрибута нет в EF7 — как я могу заставить EF7 проверять уникальность?


person Sam    schedule 22.10.2015    source источник
comment
На данный момент: я думаю, добавьте индекс вручную. Кстати, это не заставляет EF проверять уникальность.   -  person Gert Arnold    schedule 23.10.2015


Ответы (1)


Аннотации данных недоступны в бета-версии 8. См. дорожную карту.

Вы можете установить свои проверки в onModelCreating. Если вы хотите знать, что поддерживается, добавьте эту ссылку в свой проект.json

    "EntityFramework.SqlServer.Design": "7.0.0-beta8",

И используйте scaffold из командной строки

 dnx ef dbcontext scaffold "connectionstring" EntityFramework.SqlServer

пример сгенерированного кода

    protected override void OnModelCreating(ModelBuilder builder)
    {
        modelBuilder.Entity<LocalizationsOrg>(entity =>
        {
            entity.Property(e => e.Filename).HasDefaultValue("");

            entity.Property(e => e.LocaleId).HasDefaultValue("");

            entity.Property(e => e.ResourceSet).HasDefaultValue("");

            entity.Property(e => e.Type).HasDefaultValue("");

            entity.Property(e => e.Updated).HasDefaultValueSql("getutcdate()");

            entity.Property(e => e.Value).HasDefaultValue("");

            entity.Property(e => e.ValueType).HasDefaultValue(0);
        });

        // Customize the ASP.NET Identity model and override the defaults if needed.
        // For example, you can rename the ASP.NET Identity table names and more.
        // Add your customizations after calling base.OnModelCreating(builder);
    }
person Thom Kiesewetter    schedule 29.10.2015