Подтвердить что ты не робот

Первичный/внешний ключ в структуре сущностей

Я создал класс сущности в моем приложении MVC 3. Одним из атрибутов с именем RegistryId является первичный ключ, а также внешний ключ. Как я могу сделать первичный ключ столбца, а также внешний ключ? Я не использую дизайнер EF ORM. Я программирую классы вручную.

4b9b3361

Ответ 1

Я думаю, что "не используя EF ORM designer" вы подразумеваете новый DbContext API от EF 4.1. Потому что, если вы не имеете в виду API DbContext, вам все равно придется использовать EDMX (дизайнер).

Вы можете использовать аннотации данных (System.ComponentModel.DataAnnotations): KeyAttribute и ForeignKeyAttribute:

public class Registry
{
    public virtual int Id { get; set; }
    public virtual MyEntity MyEntity { get; set; }
}

public class MyEntity
{
    [Key, ForeignKey("Registry")]
    public virtual int RegistryId { get; set; }

    public virtual Registry Registry { get; set; }
}

Или вы можете использовать свободный API (переопределяя OnModelCreating в производном контексте):

(Редактирование: свободное отображение было изменено на противоположное и неполное)

protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
    base.OnModelCreating(modelBuilder);

    modelBuilder.Entity<MyEntity>()
                .HasKey(e => e.RegistryId);
    modelBuilder.Entity<MyEntity>()
                .Property(e => e.RegistryId)
                .HasDatabaseGeneratedOption(DatabaseGeneratedOption.None);
    modelBuilder.Entity<MyEntity>()
                .HasRequired(e => e.Registry)
                .WithRequiredDependent(r => r.MyEntity);
}

Где MyEntity - ваша сущность с FK, а Registry - основной объект в соотношении 1:1.