0

我先做数据库,EF 生成了 Code First DbContext 子类...

//------------------------------------------------------------------------------
// <auto-generated>
//    This code was generated from a template.
//
//    Manual changes to this file may cause unexpected behavior in your application.
//    Manual changes to this file will be overwritten if the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------

namespace Glossary.UI.Database
{
    using System;
    using System.Data.Entity;
    using System.Data.Entity.Infrastructure;

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

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

        public DbSet<GlossaryTerm> GlossaryTerms { get; set; }
    }
}

如您所见,它引发了异常,因此每次重新生成代码时我都需要将其注释掉!更重要的是,为什么它会生成这个类?

4

1 回答 1

3

您需要一个上下文才能使用实体框架。您可以自己编写一个,也可以使用该工具自动生成它。对于较新版本的 EF,首先使用数据库(.EDMX 和设计器),它将自动为您生成 DbContext。

您在上面显示的 DbContext 不是“代码优先”上下文,因为它具有 UnintentionalCodeFirstException。如果抛出该异常,则表明您正在尝试使用代码优先模式。

检查数据库是否存在并检查连接字符串。不要误用代码

于 2013-06-24T08:58:42.470 回答