2013-03-27 2 views
0

У меня есть две таблицы:Entity Framework: Добавить запись с помощью Include

User(id,name,birthday)

и

Teacher(id,id_user,post,specialization)

(Teacher : User)

Как добавить Учителю с помощью Include?

Нечто подобное: _db.Users.Include("Teacher").Add(teacher);

+0

ли отношения между Учителем и Пользователем один к одному? –

+0

Умм ... Я действительно не понимаю, как «Include» может помочь здесь, он используется только для активной загрузки. При добавлении новой записи вам нужно добавить объект к соответствующему набору сущностей ... –

ответ

1

Include используется для «надежной загрузки» данных, а не для сохранения. Если вы хотите сохранить новый учитель и новый объект пользователя, это будет что-то вроде этого:

var t = new Teacher(); 
t.User = new User(); 
context.Teachers.Add(t) 
context.SaveChanges(); 
+1

Если для EF установлено, что Учитель является производным классом от пользователя, вам нужно только создать «новый Учитель»(), поскольку учитель автоматически «Пользователь». Если они настроены как связанные таблицы, а не наследование, ваш ответ правильный. – Flater

+0

Если я пишу 'var t = new Teacher(); context.Teachers.Add (t) context.SaveChanges(); 'как @Flater сказал, я добавляю только поля из таблицы Учитель или поля из User + Teacher? – user2167382

+0

Если вы настроили наследование, ** каждая ** строка в таблице 'Teachers' будет иметь соответствующую строку в' Users'. Это имеет смысл, так как у «Учителей» есть все свойства «Пользователи» (и некоторые другие тоже, очевидно). Вы также заметите, что идентификатор в таблице «Учителя» - это тот же идентификатор, который используется в таблице «Пользователи» (для одного и того же объекта). – Flater

1

В зависимости от того, как вы определили свои модели, если вы получили свойство навигации для учителя в рамках пользовательского класса, что-то вроде этого:

public class Teacher 
{ 
    public int Id {get;set;} 
    //.... 
    public User User {get;set;} 
} 

вы затем в состоянии сделать

var teacher = new Teacher(){ User = someuser}; 
_db.Teacher.Add(teacher); 

Это сохранит как учителя, так и пользователя.

Смежные вопросы