От 1 до 0..1 Связь в структуре сущностей

Я хочу создать следующее соотношение. Очевидно, это тяжело, но я попал в первое препятствие благодаря EF. В моей базе данных первичный ключ SubForm, Id, является внешним ключом, ссылающимся на Application.Id (соблюдение отношений). Когда я добавляю новое Application EF жалуется, что у меня нет строки SubForm_Id, я не хочу этого, поскольку это, очевидно, будет дублировать первичный ключ. Могу ли я добавить некоторые аннотации к модели, чтобы разобраться в этом?

Это приводит меня к другой проблеме, если я хочу добавить новое Application с новым SubForm в базу данных одновременно - как я могу получить Application Id (он определен в db как auto-increment int) для установки это на объекте SubForm или может EF сделать это для меня?

Помощь была бы оценена.

1 ответ

EF по соглашению предполагает, что ваша таблица Application обладает скалярным свойством SubForm_Id когда у вас есть навигационное свойство типа SubForm. Необходимо явно настроить отображение общего первичного ключа.

public class MyContext
{
 protected override void OnModelCreating(DbModelBuilder modelBuilder)
 {
 modelBuilder.Entity<application>()
 .HasOptional(a => a.SubForm)
 .WithRequired(s => s.Application);
 }
 }
</application>

Вы можете вставить оба значения следующим образом

var app = new Application();
var subForm = new SubForm { Application = app };
db.SubForms.Add(subForm);
db.SaveChanges();

licensed under cc by-sa 3.0 with attribution.