0

I am new to this platform. So, I'm not familier with all the terminologies.
I'm getting the error message :

A specified Include path is not valid. The EntityType 'ERP.Models.OpeningBalance' does not declare a navigation property with the name 'AccountHeadId'.

Here I got a Model class 'OpeningBalance' in the project '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; }


    }
}

Isn't the public int AccountHeadId { get; set; } is

a navigation property with the name 'AccountHeadId'

?
The Source Error shows the lines from Controller :

    var openingBalances = db.OpeningBalances.Include(o => o.AccountHeadId);
    return View(openingBalances.ToList());  

I searched a lot in web including all related ques in stackoverflow, then tried the following form:

var openingBalances = from o in db.OpeningBalances.Include(o=>o.AccountHeadId) select o;  
return View(openingBalances.ToList());

That didn't work too. Anybody have any idea?

1 Answer 1

1

The AccountHeadId property is not a navigational property. A navigational property should be of type another entity such as ChartOfAccount or entity collection such as ICollection<ChartOfAccount>.

If the scalar property AccountHeadId is associated with the navigational property ChartOfAccount Then include ChartOfAccount in your query.

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

You use the Include method to eager load related entities to avoid multiple round trips to the database. Primitive properties such as AccountHeadId will be loaded always when you retrieve the entity that contain such properties.

Sign up to request clarification or add additional context in comments.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.