2015-10-09 49 views
1

所以我的SQL Server上表中有2個表指定的包含路徑無效。該的EntityType「

dbo.Account 

AccountID AccountStatusID ... 
    1234    1 
    4321    2 
    .... 

dbo.validAccountStatus 

AccountStatusID AccountStatus 
     1   Terminated 
     2   Active 
    .... 

在帳戶索引頁'不具有名稱聲明導航屬性」,我想顯示的狀態,而不是狀態ID,是這樣的:

AccountID AccountStatusID ... 
    1234  Terminated 
    4321  Active 
    .... 

我不斷收到此錯誤:

System.InvalidOperationException: A specified Include path is not valid. The EntityType 'BAMSQLDBModel.Account' does not declare a navigation property with the name 'validAccountStatus' 

我做數據庫第一。

模型

Account.cs 
public partial class Account 
{ 
    public int AccountID { get; set; } 
    [Display(Name = "Account Status ID")] 
    public int AccountStatusID { get; set; } 

    public virtual validAccountStatus validAccountStatus { get; set; } 
} 

validAccountStatus.cs 
public partial class validAccountStatus 
{ 
    [Key] 
    public int AccountStatusID { get; set; } 
    [Display(Name = "Account Status")] 
    public string AccountStatus { get; set; } 

    public virtual Account Account { get; set; } 
} 

語境

public partial class BAMSQLDB : DbContext 
{ 
    public BAMSQLDB() 
      : base("name=BAMSQLDB") 
    { 
    } 

    public virtual DbSet<Account> Accounts { get; set; } 
    public virtual DbSet<validAccountStatus> validAccountStatus { get; set; } 


    protected override void OnModelCreating(DbModelBuilder modelBuilder) 
    {   
     modelBuilder.Entity<Account>() 
      .HasRequired(a => a.validAccountStatus).WithRequiredPrincipal(aS => aS.Account); 
    } 
} 

控制器(我使用PagedList.MVC用於尋呼)

public ActionResult Index(int? page) 
{ 
    var accounts = from acc in db.Accounts select acc; 
    accounts = accounts.Include(accSt => accSt.validAccountStatus); 

    accounts = accounts.OrderBy(acc => acc.AccountName); 

    int pageSize = 20; 
    int pageNumber = (page ?? 1); 

    return View(accounts.ToPagedList(pageNumber, pageSize)); 
} 

回答

1

嘗試添加DataAnnotation到您的賬戶類

Account.cs

public partial class Account 
{ 
    public int AccountID { get; set; } 
    [Display(Name = "Account Status ID")] 
    public int? AccountStatusID { get; set; } 
    /* HERE */  
    [ForeignKey("AccountStatusID")] 
    public virtual validAccountStatus validAccountStatus { get; set; } 
} 

我的事情,你需要改變你的導航帳戶的一個列表,因爲每個validAccountStatus可以在很多賬戶掛鉤,正確?

validAccountStatus.cs

public partial class validAccountStatus 
{ 
    [Key] 
    public int AccountStatusID { get; set; } 
    [Display(Name = "Account Status")] 
    public string AccountStatus { get; set; } 

    public virtual List<Account> Accounts { get; set; } 
} 

變化控制器

public ActionResult Index(int? page) 
{ 
    IQueyable<Account> accounts = from acc in db.Accounts select acc; 
    accounts = accounts.Include(accSt => accSt.validAccountStatus); 

    accounts = accounts.OrderBy(acc => acc.AccountName); 

    int pageSize = 20; 
    int pageNumber = (page ?? 1); 

    return View(accounts.ToPagedList(pageNumber, pageSize)); 
} 
+0

仍然收到這個錯誤。我在Account中打開了數據庫圖表和導航屬性字段,並且validAccountStatus仍然是空白的。但是,非常感謝您指出帳戶應該是validAccountStatus中的一個列表。 – PTN

+0

我有2次嘗試:一個。將IndexActtion'var account'更改爲'IQueyable account'。二。創建一個連接表validAccountStatus的Linq。 –

相關問題