2012-07-05 44 views
0

我得到一個錯誤上的下面一行14:MVC3 - 上建立自己的錯誤(不一致的可訪問性)

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Web; 
using System.Web.Mvc; 
using TimeDb.Models; 

namespace TimeDb.Areas.Stock.Models 
{ 
public class ProductAddViewModel 
{ 
    private readonly DatabaseDataContext _db = new DatabaseDataContext(); 
    public SelectList ProductTypes; 
    public Product Product { get; set; } 

    public ProductAddViewModel() 
    { 
     Product = new Product(); 
     PopulateLists(); 
    } 

    public ProductAddViewModel(int id) 
    { 
     Product = _db.Products.Single(p => p.Id == id); 
     PopulateLists(); 
    } 

    private void PopulateLists() 
    { 
     ProductTypes = new SelectList(_db.ProductTypes.OrderBy(pt => pt.Name), "Id", "Name"); 
    } 
} 

}

現在,這只是因爲我嘗試添加一個新的領域,以數據庫的出現的.cs。

我想要做的是添加一個新的字段,我已經添加到數據庫表中。但是錯誤出現在上面。我試圖改變數據庫代碼的

部分是:

#region Product 
[MetadataType(typeof(ProductMetaData))] 
partial class Product 
{ 

} 

public class ProductMetaData 
{ 
    [Required] 
    [DisplayName("Name")] 
    public string Name { get; set; } 

    [Required] 
    [DisplayName("Description")] 
    public string Description { get; set; } 

    [Required] 
    [DisplayName("Retail Price")] 
    public double RetailPrice { get; set; } 

    [Required] 
    [DisplayName("Threshold")] 
    public int Threshold { get; set; } 

    [Required] 
    [DisplayName("Number To Keep In Stock")] 
    public int NumberToKeepInStock { get; set; } 

    [Required] 
    [DisplayName("Shelf")] 
    public string Shelf { get; set; } 

} 

我說:

[DisplayName("disabled")] 
public int disabled { get; set;} 

最有可能的,我不知道的調整好自己的數據庫代碼的最佳方式,一旦我調整表。但是,當我刪除上述修改時,它仍然顯示相同的錯誤。

什麼是最好的前進方向?

感謝

回答

5

Product類不是public,這意味着它將爲internal處理。當您將Product類型的屬性公開爲public,該屬性本身爲public時,該屬性將在當前程序集外部可見。然而,Product類是internal並且不可見。這是不一致的。

要麼使您的Productpublic或您的Product財產internal

由於這是一個MVC視圖模型,您可能希望使用public選項以使該視圖可見(視圖在單獨的程序集中編譯,無法訪問視圖模型的internal屬性)。

+0

啊,這就是我的想法。但是,如果我將局部類更改爲公共,我會得到(我仍然在學習哪一個我確信你已經猜到了) 對聲明的Foo.Models.Product缺少部分修飾符;存在這種類型的另一部分聲明。 – user1479931 2012-07-05 13:30:31

+0

好吧,看起來像我已經排序,可能是我已經將表插入到另一個類創建的dbml表後。 – user1479931 2012-07-05 14:52:57