#linq-to-sql #entity-framework #linq-to-entities
#linq-to-sql #entity-framework #linq-to-entities
Вопрос:
Я создаю свое первое приложение MVC 2. Я следовал примерам в книгах, которые у меня есть, и создал ADO.NET Модель данных объекта, которая автоматически сгенерировала файлы model.edms и model.designer.cs. Затем я создал файл repository.cs в моей папке model для хранения моих методов извлечения данных. Когда я использую эти методы для извлечения объекта из моих таблиц, атрибуты foriegn key возвращают null. Вот один из моих методов
private LanTracerEntities2 entities = new LanTracerEntities2();
public Employee FindEmployee(string empId)
{
var emp = from employee in entities.Employees
where employee.LogIn == empId
select employee;
return emp.FirstOrDefault();
}
Таблица employee содержит следующие столбцы:
ID
EmpFName
EmpLName
Эмпирический
Телефон
войти
Электронная почта
LocID
LocID — это исходный ключ, связывающий его с таблицей местоположений. Когда я запускаю метод, он возвращает значение для каждого атрибута, кроме LocID. LocID равен null. В таблице есть данные. Это не единственный объект, который у меня есть, который возвращает null для атрибутов foriegn key. Как я могу получить метод, возвращающий значения FK?
Комментарии:
1. Ваш вопрос не имеет ничего общего с MVC. Это скорее проблема LINQ для сущностей.
Ответ №1:
Похоже, вы сравниваете с неправильным свойством? Учитывая имя вашего параметра, я думаю, вы могли бы захотеть сравнить с идентификатором сотрудника:
var emp = from employee in entities.Employees
where employee.ID == empId
select employee;
Сказав, что ваш первичный ключ должен быть числовым int / bigint — если это так, сделайте это вместо:
int id = Convert.ToInt32(empId);
var emp = from employee in entities.Employees
where employee.ID == id
select employee;
Если вы хотите включить местоположение как часть результатов вашего запроса, вы можете специально запросить это:
var emp = from employee in entities.Employees.Include("Location")
..
Это должно заполнить Location
свойство в вашей записи employee при его извлечении.
Комментарии:
1. Спасибо, что я добавил. Оператор Include, и он, наконец, включает данные fk. Могу ли я использовать это для ввода нескольких FK? Если это так, отформатируйте это. Включить («FK1», «FK2»)
2. @user: Да — вы можете связать инструкции Include в цепочку, т. Е.
entities.Employees.Include("foo").Include("bar")
Я рекомендую вам ознакомиться с документацией по функциям на msdn.microsoft.com/en-us/library/bb896272.aspx