web-dev-qa-db-ja.com

OnModelCreating undefined in Entity Framework 7

EF7でモデルの関係を設定しようとしていますが、問題に直面しました。OnModelCreatingメソッドとDbModelBuilderが未定義です。

以前はEF6を使用していましたが、現在はEF7に移行しようとしています。

これが私のコードです

protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
        //Section -> many Category
        modelBuilder.Entity<Section>()
            .HasMany<Category>(p => p.Categories)
            .WithRequired(p => p.Section);

        //Section -> many PriceCategory
        modelBuilder.Entity<Section>()
            .HasMany<PriceCategory>(p => p.PriceCategories)
            .WithRequired(p => p.Section);

        //Category - many Procedures
        modelBuilder.Entity<Category>()
            .HasMany<Procedure>(p => p.Procedures)
            .WithRequired(p => p.Category);

            //PriceCategory - many PriceProcedures
            modelBuilder.Entity<PriceCategory>()
            .HasMany<PriceProcedure>(p => p.PriceProcedures)
            .WithRequired(p => p.PriceCategory);
}

私の輸入品:

using Microsoft.Data.Entity;
using Domain.Models;

私のproject.json:

{
  "version": "1.0.0-*",
  "description": "Domain Class Library",
  "authors": [ "Garrus" ],
  "tags": [ "" ],
  "projectUrl": "",
  "licenseUrl": "",

    "dependencies": {
        "EntityFramework.Commands": "7.0.0-rc1-final",
        "EntityFramework.Core": "7.0.0-rc1-final",
        "EntityFramework.MicrosoftSqlServer": "7.0.0-rc1-final",
        "Microsoft.CSharp": "4.0.1-beta-23516",
        "System.Collections": "4.0.11-beta-23516",
        "System.Linq": "4.0.1-beta-23516",
        "System.Runtime": "4.0.21-beta-23516",
        "System.Threading": "4.0.11-beta-23516"
    },

  "frameworks": {
    "net451": { },
    "dnxcore50": {}
  }
}

手伝って頂けますか? NuGetパッケージを忘れたのか、EF7でモデルリレーションを設定する別の方法がありますか?

14
Alexey Markov

次のようになります。

protected override void OnModelCreating(ModelBuilder modelBuilder)
 {
    ....
 }

DbModelBuilderの名前がModelBuilderに変更されたと思います

39
Joe Audette

ええと...私はたくさんの問題を抱えているので私は新しいASP.NET 5 MVCプロジェクトを作成します、古いモデル、コントローラー、viewaなどをそこにコピーします。それはすべてOKです。 (これは奇妙な魔法だと思います

ここでそのオーバーライドされたメソッド、すべてがOKです

        protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
        {
            base.OnConfiguring(optionsBuilder);
        }

        protected override void OnModelCreating(ModelBuilder modelBuilder)
        {
            base.OnModelCreating(modelBuilder);
        }

私の使い方は問題と同じです。そしてドメインのproject.json、多分それは同じエラーに直面している人々のために役立つかもしれません。

{
  "version": "1.0.0-*",
  "description": "Domain Class Library",
  "authors": [ "Garrus" ],
  "tags": [ "" ],
  "projectUrl": "",
    "licenseUrl": "",

    "dependencies": {
        "Microsoft.CSharp": "4.0.1-beta-23516",
        "System.Collections": "4.0.11-beta-23516",
        "System.Linq": "4.0.1-beta-23516",
        "System.Runtime": "4.0.21-beta-23516",
        "System.Threading": "4.0.11-beta-23516",
        "EntityFramework.Core": "7.0.0-rc1-final",
        "EntityFramework.Commands": "7.0.0-rc1-final",
        "EntityFramework.MicrosoftSqlServer": "7.0.0-rc1-final"
    },

  "frameworks": {
    "net451": { },
    "dnxcore50": { }
  }
}
1
Alexey Markov