Извините, я новичок, и я не получаю это [закрыто]

Это касается ответа @Ladislav Mrnka на использование свободного api для настройки отношения «один к одному».

Если бы ситуация, когда FK of dependent must be it's PK была невозможна.

Например, Foo уже имеет отношение «один ко многим» с Bar.

public class Foo {
   public Guid FooId;
   public virtual ICollection<> Bars; 
}
public class Bar {
   //PK
   public Guid BarId;
   //FK to Foo
   public Guid FooId;
   public virtual Foo Foo;
}

Теперь нам пришлось добавить еще одну взаимно-однозначную связь между Foo и Bar.

public class Foo {
   public Guid FooId;
   public Guid PrimaryBarId;// needs to be removed(from entity),as we specify it in fluent api
   public virtual Bar PrimaryBar;
   public virtual ICollection<> Bars;
}
public class Bar {
   public Guid BarId;
   public Guid FooId;
   public virtual Foo PrimaryBarOfFoo;
   public virtual Foo Foo;
}

Вот как указать отношения «один-к-одному», используя беглый api:

modelBuilder.Entity()
            .HasOptional(p => p.PrimaryBarOfFoo)
            .WithOptionalPrincipal(o => o.PrimaryBar)
            .Map(x => x.MapKey("PrimaryBarId"));

. Обратите внимание, что при добавлении PrimaryBarId необходимо удалить, поскольку мы определяем его с помощью свободного api.

Также обратите внимание, что имя метода [WithOptionalPrincipal()][1] является своеобразным ироничным. В этом случае Principal Bar. Описание WithOptionalDependent () в msdn делает его более понятным.

-8
задан TartanLlama 4 November 2016 в 10:15
поделиться