У меня возникли проблемы с получением всех данных из базы данных, и я не совсем уверен, что я делаю неправильно, почти все это для меня нова ,Объекты дочерних объектов MVC4 EF4.3 не извлекаются из базы данных
Я искал SO и нашел следующий вопрос, который кажется довольно похож на мой - Repository Pattern for Entity Framework and Children Objects
I've looked at the answer which contained this link, но я изо всех сил, чтобы получить эту работу.
У меня есть мой репозиторий кампании, который возвращает кампанию. Он возвращает список аудитов, как ожидалось, но у Аудитов нет комментариев или Кампании в них. Есть ли что-то особенное, что мне нужно сделать, чтобы сообщить БД вытащить все каскадные объекты?
Спасибо за любую помощь
Нил
public override Campaign Get(int id)
{
var query = Context.Campaigns.Include(x => x.Audits)
.FirstOrDefault(c => c.CampaignId == id);
if (query != null)
Logger.Trace(query.ToString());
return query;
}
У меня есть моя кампания класса
public class Campaign
{
public Campaign()
{
Audits = new Collection<Audit>();
}
public int CampaignId { get; set; }
[StringLength(40, ErrorMessageResourceType = typeof(Resources.Resources), ErrorMessageResourceName = "CampaignModel_Name_StringLength")]
[Required(ErrorMessageResourceType = typeof(Resources.Resources), ErrorMessageResourceName = "CampaignModel_Name_Required")]
[Display(Name = "CampaignModel_Name", ResourceType = typeof(Resources.Resources))]
public string Name { get; set; }
public ICollection<Audit> Audits { get; set; }
}
И мой аудит класс
public class Audit
{
public Audit()
{
Comments = new Collection<Comment>();
}
public int AuditId { get; set; }
[Required(ErrorMessageResourceType = typeof(Resources.Resources), ErrorMessageResourceName = "Audit_CampaignAction_Required")]
[Display(Name = "Audit_CampaignAction", ResourceType = typeof(Resources.Resources))]
public CampaignAction Action { get; set; }
[Required(ErrorMessageResourceType = typeof(Resources.Resources), ErrorMessageResourceName = "Audit_UserName_Required")]
[Display(Name = "Audit_UserName_Content", ResourceType = typeof(Resources.Resources))]
public string UserName { get; set; }
[Required(ErrorMessageResourceType = typeof(Resources.Resources), ErrorMessageResourceName = "Audit_TimeStamp_Required")]
[Display(Name = "Audit_TimeStamp", ResourceType = typeof(Resources.Resources))]
public DateTime TimeStamp { get; set; }
public ICollection<Comment> Comments { get; set; }
[JsonIgnore]
public virtual ICollection<Campaign> Campaigns { get; set; }
}
Вы также пытались маркировки методы, как 'virtual', как это должно быть проще, чтобы получить данные без необходимости использовать' Include' – Kane