MVC Controller Создать новую запись - PullRequest
1 голос
/ 30 ноября 2011

Я использую c # MVC Я пытаюсь создать 2 новые записи в 2 таблицах - таблицы сотрудников и адресов.Пока у меня есть следующее:

    db.employee.AddObject(empmodel.employee);
    db.address.AddObject(empmodel.address); 
    db.SaveChanges();

Когда создается запись сотрудника, она создает запись EmpID, которая генерируется автоматически.Мне нужно получить этот EmpID и создать новую запись в таблице адресов с этим EmpID, так как между двумя таблицами существует отношение первичного внешнего ключа.

Я не уверен, как получить EmpID из таблицы сотрудникова затем создать новую запись для таблицы адресов.Я думал, что смогу получить его после AddObject, но он не создал запись сотрудника.

Ответы [ 3 ]

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

Я предполагаю, что вы используете Entity Framework с учетом кода, который вы предоставляете.Вы должны установить отношения между двумя вашими сущностями и позволить EF обработать это для вас:

public class Employee {
    public int EmployeeId { get; set; }
    public virtual Address Address { get; set; }
}

public class Address {
    public int AddressId { get; set; }
    public int EmployeeId { get; set; }
    public virtual Employee Employee { get; set; }
}

Теперь, когда вы создаете сущности:

// create a new Employee
Employee employee = new Employee(); 

// create a new Address
Address address = new Address();

// associate the address with the new employee
employee.Address = address;

// add the employee to the data context
db.employee.AddObject(employee);

// when you call save changes, since your Address is attached to your
// employee, it will get added for you and you don't have to add it to the
// context yourself. Entity Framework will save the Employee, get the ID
// from this table and then add a new Address record using the ID that was
// just inserted. 
db.SaveChanges();

Это добавит оба объекта и добавитвнешний ключ для вас.

Редактировать

Это первый пример кода.Если вы сначала используете базу данных с помощью дизайнера, просто установите отношения с помощью дизайнера.Код для добавления сотрудника в этом случае не должен изменяться.

1 голос
/ 25 августа 2012

Я знаю, что вы не должны просто давать отзывы, но в этом случае этот ответ правильный, нет необходимости идти дальше. Если вы создаете модель, используя таблицу базы данных, если эта таблица базы данных имеет поле идентификатора. Это создаст для вас get/set методы. В моем случае он даже создал более сложный метод get/set, вероятно, потому, что имя моего поля идентификатора - ProdID. Но вы можете развернуть файл model.cs (после создания модели из базы данных) и увидеть метод get/set, о котором говорят эти парни. В случае, если вы используете GUID, вы можете просто использовать

card.Guid = Guid.NewGuid();

Метод NewGuid() в функции создания контроллера.

0 голосов
/ 08 июня 2017

Это работает для меня:

db.Employees.Add(emp);
db.Savechanges();

Перейдите по этой ссылке для полного урока: https://www.youtube.com/watch?v=qOiwjbPmxSk

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...