Хотя мне нравится то, что я изучаю, я нахожу это трудным делом и мне нужна помощь
Я использовал эти два урока, которые, на мой взгляд, великолепны:
http://weblogs.asp.net/scottgu/archive/2010/07/16/code-first-development-with-entity-framework-4.aspx
http://msdn.microsoft.com/en-us/data/gg685467
В настоящее время моя главная проблема / путаница:
У меня есть таблица / сущность CodeFirst, я не знаю, как правильно получить данные из других таблиц / сущностей для отображения в моих представлениях:
public class Car {
public int ID { get; set; }
public string Name { get; set; }
public int EngineID { get; set; }
public virtual Engine { get; set; }
}
public class Engine {
public int ID { get; set; }
public string Name { get; set; }
public string Manufacturer { get; set; }
// (plus a whole lot of other things)
}
Теперь, когда я создаю View for Cars (используя тип / опцию List), я получаю хороший автоматически сгенерированный список
@foreach (var item in Model) {
<tr>
<td>@item.ID</td>
<td>@item.Name</td>
<td>@item.EngineID</td>
</tr>
Отлично ... за исключением того, что EngineID в основном бесполезен для зрителя, и я хочу показать Engine.Name вместо него
Итак, я предположил, что мог бы использовать ленивую загрузку EF:
<td>@item.Engine.Name</td>
К сожалению, когда я попробовал это, он говорит, что мой ObjectContext был удален, поэтому не может получить дальнейшие данные, требующие подключения
Затем я попытался перейти к контроллеру и включить Engine.Name
var cars = (from c in db.Cars.Include("Engine.Name") select c;
Что говорит мне: Entities.Engine не объявляет свойство навигации с именем 'Name'
...? Ложь
Include («Engine») работает нормально, но все, что мне нужно, это имя, а Include («Engine») загружает большое количество ненужных мне вещей
Ранее в такой ситуации я создал представление в БД для автомобиля, которое также включает в себя EngineName. Но с CodeFirst и моей noobness я не нашел способ сделать это
Как мне решить эту проблему?
Я подумал, что, возможно, смогу создать модель, почти идентичную сущности Car, но добавлю в нее Engine.Name. Это было бы неплохо, так как я мог бы затем использовать его в нескольких местах, но я не знаю, как его заполнить и т. Д.
Желание также изучить TDD, но вышесказанное уже расстраивает меня: p
PS Любые другие учебные ссылки или полезные материалы для чтения будут с благодарностью