与实体框架,.NET4,MVC3相关的错误

时间:2011-10-29 12:31:32

标签: asp.net-mvc-3 .net-4.0

我是这个平台的新手。所以,我对所有术语都不熟悉 我收到错误消息:

  

指定的包含路径无效。 EntityType'ERP.Models.OpeningBalance'不会声明名为'AccountHeadId'的导航属性。

我在项目'ERP'

中获得了Model类'OpeningBalance'
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 个答案:

答案 0 :(得分:1)

AccountHeadId属性不是导航属性。导航属性应该是另一个实体的类型,例如ChartOfAccount或实体集合,例如ICollection<ChartOfAccount>

如果标量属性AccountHeadId与导航属性ChartOfAccount相关联,则在查询中包含ChartOfAccount

var openingBalances = db.OpeningBalances.Include(o => o.ChartOfAccount);

您使用Include方法来加载相关实体,以避免多次往返数据库。当您检索包含此类属性的实体时,将始终加载诸如AccountHeadId之类的原始属性。