错误 - 当前上下文中不存在名称“GetSuppliers”

时间:2014-03-02 07:52:18

标签: c# asp.net entity-framework-5 code-first

我有一个运行vs2013的Web表单应用程序。我正在使用代码优先模型构建应用程序。

我有一个datacontext类和一个初始化类来为一些初始数据提供种子。一切都工作正常,直到我决定更改模型并对我的类之间的关系进行一些更改,然后再添加4个。现在我在初始化类中得到4个错误,说“当前上下文中不存在名称'xxxxx'”这很奇怪,因为其他6个类似的语句工作正常。

我已经清理过,重建了解决方案。重新启动了我的电脑。我不知道还有什么可以尝试的。任何帮助将不胜感激。

以下是代码:

myDataContext:

using System.Data.Entity;
using System.Collections.Generic;

namespace YPGOOS.Models
{
    public class myDataContext : DbContext
    {
        public myDataContext() : base("YPGOOS") { }

        public DbSet<Category> Categories { get; set; }
        public DbSet<Style> Styles { get; set; }
        public DbSet<Product> Products { get; set; }
        public DbSet<Size> Sizes { get; set; }
        public DbSet<QuantityBreak> QuantityBreaks { get; set; }
        public DbSet<Stock> Stocks { get; set; }
        public DbSet<Supplier> Suppliers { get; set; }
        public DbSet<Finish> Finishes { get; set; }
        public DbSet<FinishConstraint> FinishConstraints { get; set; }
        public DbSet<FinishAttribute> FinishAttributes { get; set; }
    }
}

然后myDatabaseInitialiser类:

using System.Collections.Generic;
using System.Data.Entity;

namespace YPGOOS.Models
{
    //public class myDatabaseInitialiser : DropCreateDatabaseIfModelChanges<myDataContext>
    public class myDatabaseInitialiser : DropCreateDatabaseAlways<myDataContext>
    {
        protected override void Seed(myDataContext context)
        {
            GetCategories().ForEach(c => context.Categories.Add(c));
            GetProducts().ForEach(p => context.Products.Add(p));
            GetSizes().ForEach(s => context.Sizes.Add(s));
            GetQuantityBreaks().ForEach(q => context.QuantityBreaks.Add(q));
            GetStyles().ForEach(st => context.Styles.Add(st));
            GetStocks().ForEach(x => context.Stocks.Add(x));
            GetSuppliers().ForEach(su => context.Suppliers.Add(su));
            GetFinishes().ForEach(f => context.Finishes.Add(f));
            GetFinishConstraints().ForEach(fc => context.FinishConstraints.Add(fc));
            GetFinishAttributes().ForEach(fa => context.FinishAttributes.Add(fa));
        }

        private static List<Category> GetCategories()
        {
            var categories = new List<Category> {
                new Category
                {
                    CategoryID = 1,  etc

我最近添加了最后4个; GetSuppliers,GetFinishes,GetFinishConstraints,GetFinishAttributes以及这些4我收到了错误。

以下是供应商类:

using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;

namespace YPGOOS.Models
{
    public class Supplier
    {
        [ScaffoldColumn(false)]
        public int SupplierID { get; set; }

        [Required, StringLength(100), Display(Name = "Supplier Name")]
        public string SupplierName { get; set; }

        [Required, StringLength(4), Display(Name = "Supplier Code")]
        public string SupplierCode { get; set; }

        //Navigation Properties
        public virtual ICollection<Product> Products { get; set; }
        public virtual ICollection<Stock> Stocks { get; set; }
        public virtual ICollection<Category> Categories { get; set; }
    }
}

2 个答案:

答案 0 :(得分:0)

    public DbSet<Size> Suppliers { get; set; }

为什么供应商是规模的通用?您有供应商类。这只是一个错字吗? intellisense是否开始像自动更正一样?

答案 1 :(得分:0)

尴尬地回答这个,真正的新手问题。我只是在DatabaseInitialiser类中没有一个名为GetSuppliers()的方法 - 只要我把它放在错误消失中。