От 1 до 0..1 Отношения в Entity Framework - PullRequest
0 голосов
/ 22 ноября 2011

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

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

Помощь будет оценена.

1 Ответ

3 голосов
/ 22 ноября 2011

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);
    }
 }

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

var app = new Application();
var subForm = new SubForm { Application = app };
db.SubForms.Add(subForm);
db.SaveChanges();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...