C# MVC3-生成时出错(不一致的可访问性)
我在下面的第14行得到一个错误: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
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表之后创建了另一个类。