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

Entity Framework を使用するには、コンテキストが必要です。自分で作成することも、ツールを使用して自動的に生成することもできます。データベースを最初に使用する EF の新しいバージョン (.EDMX およびデザイナー) では、DbContext が自動的に生成されます。

上で示した DbContext は UnintentionalCodeFirstException があるため、「Code First」コンテキストではありません。その例外がスローされている場合は、コード ファースト モードを使用しようとしていることが示唆されます。

データベースが存在することを確認し、接続文字列を確認してください。誤って code first を使用しないでください

于 2013-06-24T08:58:42.470 に答える