C# MVC3-生成时出错(不一致的可访问性)

C# MVC3-生成时出错(不一致的可访问性),c#,asp.net-mvc-3,C#,Asp.net Mvc 3,我在下面的第14行得到一个错误: 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 DatabaseDa

我在下面的第14行得到一个错误:

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");
    }
}
}

现在,这只是在我尝试向Database.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;}
在调整表之后,我很可能不知道调整数据库代码的最佳方法。但当我删除上述修正案时,仍然显示出同样的错误

前进的最佳途径是什么


谢谢

您的
产品
类不是
公共
,这意味着它将被视为
内部
。当您将
Product
类型的属性作为本身为
public
的类的
public
公开时,该属性将在当前程序集外部可见。但是,
产品
类是
内部
且不可见。这就是矛盾之处

将您的
产品
公开
或将您的
产品
属性内部


由于这是一个MVC视图模型,您可能希望使用
public
选项使属性对视图可见(视图在单独的程序集中编译,无法访问视图模型的
内部属性)。

您的
产品
类不是
public
,这意味着它将被视为
内部
。当您将
Product
类型的属性作为本身为
public
的类的
public
公开时,该属性将在当前程序集外部可见。但是,
产品
类是
内部
且不可见。这就是矛盾之处

将您的
产品
公开
或将您的
产品
属性
内部


由于这是一个MVC视图模型,您可能希望使用
public
选项使属性对视图可见(视图在单独的程序集中编译,无法访问视图模型的
internal
属性)。

Ahh,这就是我的想法。但是,如果我将partial类更改为public,我会发现(我仍在学习,我相信您已经猜到了)Foo.Models.Product类型声明中缺少partial修饰符;存在这种类型的另一个部分声明。好的,看起来我已经对它进行了排序,可能是在我将表重新插入到dbml表中之后,创建了另一个类。啊,现在我是这么想的。但是,如果我将partial类更改为public,我会发现(我仍在学习,我相信您已经猜到了)Foo.Models.Product类型声明中缺少partial修饰符;存在此类型的另一个部分声明。好的,看起来我已经对其进行了排序,可能是在我将表重新插入dbml表之后创建了另一个类。