8

我使用 EF 创建了一个模型,并使用 DbContext 5.X 生成器生成了它的上下文。现在我重命名了我的一个实体的类名。现在,当我运行我的代码时,我得到“实体类型 Student2 不是当前上下文模型的一部分”。错误。

var context = new MyEntities(connectionString);
foreach(var student in context.Students)
{
    Console.WriteLine(class.Name.ToString());
}

在我的数据上下文中。

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

    protected override void OnModelCreating(DbModelBuilder modelBuilder)
    {
        throw new UnintentionalCodeFirstException();
    }

    // public DbSet<Student> Students { get; set; } -> Origional
    public DbSet<Student2> Student { get; set; } // I renamed Student to Student2
}

如何解决这个问题?由于一些冲突,我需要重命名我的班级。

4

4 回答 4

14

当我在连接字符串中有错误的元数据时,我遇到了同样的问题。尝试在 app.config 中重新创建连接字符串。

于 2013-12-17T12:29:18.860 回答
1

利用Add-Migration

这是示例:

Add-Migration "Muster" -ConnectionString "Data Source=.;" -ConnectionProviderName System.Data.SqlClient

和更新数据库,像这样:

Update-Database -ConnectionString "Data Source=.;" -ConnectionProviderName System.Data.SqlClient

Visual Studio你可以使用Package Manager Console它。作为默认项目,您应该选择您的Entity Framework项目 - 如果您有很多项目。

于 2013-04-15T09:50:10.623 回答
0

许多教程要求制作所有这些不需要的额外类。基本上,要使实体框架工作,您需要做的就是创建模型,然后在控制器中创建对象。

示例模型:myEntity.edmx 示例控制器:

public class HomeController : Controller
    {
        myEntity db = new myEntity();

        public ActionResult Index()
        {
            return View(db.myTable.ToList());
        }
}

其他所有内容都在实体模型中,因此当错误读取:“myEntityContext”不是模型的一部分”时,这是真的,因为我根据教程创建了一个名为“myEntityContext”的额外类。

当您尝试使用您创建的上下文创建强视图时,它会爆炸,因为它试图关联模型中不存在的类。因此,通过删除所有额外的 DAL 和模型上下文,使用显示在强视图菜单中的 Entity.context 创建一个新视图,一切都应该正常工作。

我遇到了同样的问题并发布了我为解决它所做的事情

于 2013-11-09T18:20:04.397 回答
0

那么这里是解决方案。打开 Model.edmx 文件的 UI,将 Student 实体名称编辑为 Student2。这将生成新的文件和上下文,其中 Student 将被 Student2 替换。

于 2013-04-16T04:57:56.450 回答