Структура сущности один в один свободно API

Есть ли способ настроить отношение один к одному, используя только Fluent API? (Нет аннотаций данных).

Мне нужно что-то вроде этого:

public class User
{
   public int Id {get;set;}
   public string Name {get;set;}
}

public class Address
{
   public int Id{get;set;}
   public string Address {get;set;}
   public User User {get;set;}
   public int UserId {get;set;}
}

Адрес имеет идентификационный идентификатор, но также и внешний ключ для пользователя (UserId). Является ли это возможным?

1 ответ

Нечто подобное для вашего случая User/Address должно работать:

    protected override void OnModelCreating(DbModelBuilder modelBuilder)
    {
        modelBuilder.Entity<Address>()
                    .HasKey(e => e.UserId);

        modelBuilder.Entity<Address>()
                    .Property(e => e.UserId)
                    .HasDatabaseGeneratedOption(DatabaseGeneratedOption.None);

        modelBuilder.Entity<Address>()
                    .HasRequired(e => e.User)
                    .WithRequiredDependent(s => s.Address);

        base.OnModelCreating(modelBuilder);
   }

Для получения более подробной информации о Entity Framework Fluent API вы можете обратиться к этому или этому.

Если у вас уже есть база данных и вы хотите сгенерировать для нее POCO, вы можете использовать такой инструмент, как этот

Надеюсь, это поможет.