#asp.net-mvc-3 #.net-4.0
#asp.net-mvc-3 #.net-4.0
Вопрос:
Я новичок в этой платформе. Так что я не очень хорошо знаком со всей терминологией.
Я получаю сообщение об ошибке :
Указанный путь включения недопустим. Тип объекта ‘ERP.Модели.OpeningBalance’ не объявляет свойство навигации с именем ‘AccountHeadId’.
Здесь я получил класс модели ‘OpeningBalance’ в проекте ‘ERP’
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.ComponentModel.DataAnnotations;
namespace ERP.Models.Account
{
public class OpeningBalance
{
[Key]
public int OpenningBalanceId { get; set; }
[Required(ErrorMessage = "The {0} cannot be left blank.")]
[Display(Name = "Openning Balance Date")]
[DataType(DataType.Date)]
[DisplayFormat(NullDisplayText = "", DataFormatString = "{0:dd-MM-yyyy}")]
public DateTime OpenningBalanceDate { get; set; }
[Required]
[StringLength(100, ErrorMessage = "The {0} cannot be left blank.")]
[Display(Name = "AccountHeadId")]
public int AccountHeadId { get; set; }
public virtual ChartOfAccount ChartOfAccount { get; set; }
}
}
Разве это не public int AccountHeadId { get; set; }
есть
свойство навигации с именем «AccountHeadId»
?
Ошибка источника показывает строки из контроллера :
var openingBalances = db.OpeningBalances.Include(o => o.AccountHeadId);
return View(openingBalances.ToList());
Я много искал в Интернете, включая все связанные вопросы в stackoverflow, затем попробовал следующую форму:
var openingBalances = from o in db.OpeningBalances.Include(o=>o.AccountHeadId) select o;
return View(openingBalances.ToList());
Это тоже не сработало. У кого-нибудь есть какие-нибудь идеи?
Ответ №1:
Это AccountHeadId
свойство не является навигационным свойством. Навигационное свойство должно иметь тип another entity , например , ChartOfAccount
или entity collection , например ICollection<ChartOfAccount>
.
Если скалярное свойство AccountHeadId
связано с навигационным свойством ChartOfAccount
, включите ChartOfAccount
его в свой запрос.
var openingBalances = db.OpeningBalances.Include(o => o.ChartOfAccount);
Вы используете Include
метод для нетерпеливой загрузки связанных объектов, чтобы избежать многократного обращения к базе данных. Примитивные свойства, такие как AccountHeadId
будут загружаться всегда, когда вы извлекаете объект, содержащий такие свойства.