Сгенерированные классы из EDM являются классами ORM/Persistence. Вы используете эти классы для запроса/внесения изменений из/в базу данных. Вам необходимо перевести любой объект DTO в объект POCO, когда нужно внести изменения в базу данных.
ORM - это сопоставление объекта с данными в базе данных, вместо того чтобы иметь дело с синтаксисом insert into
для вставки записи в базу данных в приложении, вы используете StudentSet.Add
для добавления новых данных. Информация johndoe
будет переведена в sql-синтаксис, EF будет отображать каждое свойство в каждый столбец при переводе его в запрос.
Метод Add
будет хранить johndoe
в виде Added
в памяти, но он не будет выполнен сразу же в базе данных. Если у вас есть другой метод Add
, он будет также отмечен как Added
. В тот момент, когда вы вызываете SaveChanges
, все изменения будут сохранены в базе данных, отправив сгенерированный запрос.
Отображение между объектами DTO и EF происходит до того, как вы добавите johndoe
. У вас может быть другой класс DTO, который используется в пользовательском интерфейсе. Вам нужно сопоставить его вручную или с помощью библиотеки карт, чтобы создать объект POCO из объекта DTO. Например:
// studentDto as parameter
var johndoe = new Student
{
Name = studentDto.StudentName,
Age = studentDto.StudentAge
};
MyContext.StudentSet.Add(johndoe);
// studentDto might have another information as well
var johndoeSubject = new Subject
{
Name = studentDto.SubjectName,
Years = studentDto.SubjectYears
};
MyContext.SubjectSet.Add(johndoeSubject);
MyContext.SaveChanges();
Что вы пробовали, да, ваш код поместит JohnDoe в вашу базу данных. Если вы переносите данные на DTO, вам нужно установить POCO на основе свойств из DTO. –