0

API 内で ModelBuilder を作成しようとしていますが.HasRequired()、コードに追加できないようです。これは 内に住んでいるという事実によるものだとDBModelBuilder思いますが、それも追加できません。

の使用のみを許可しますModelBuilder。それ以外の場合、エラーがスローされます。OnModelCreating(DbModelBuilder): no suitable method found to override

ここで何か不足していますか?

私の DbContext は次のようになります。

public class TicketContext : DbContext
    {
        public DbSet<Tickets> Tickets { get; set; }
        public DbSet<Users> Users { get; set; }

        protected override void OnModelCreating(DbModelBuilder modelBuilder) // <-- Not allowing me to add DbModelBuilder here
        {
            modelBuilder.Entity<Tickets>().HasRequired(t => t.Users);

        }
    }

アップデート

(テストとして) 新しいプロジェクトをゼロから開始しました。Web API テンプレートを使用して新しい ASP.NET 5.0 プロジェクトを作成しました。すぐに私のプロジェクトは認識しませんDbModelBuilder。EntityFramework.dll への参照を追加しましたが、まだうまくいきません。次に追加using System.Data.Entity;して受け入れましDbModelBuilderたが、名前空間 'DbModelBuilder' が見つからなかったとまだ不平を言っています。

まったく新しいプロジェクトでこのエラーを事前に発生させる方法がわかりませんか?

NuGet からパッケージ Entity Framework を追加しようとするとすぐに、バージョン 6.1.3 は DNX Core 5.0 と互換性がないというエラーがさらに表示されます。

これらのエラーの例/解決策が見つからないようです。

更新 2

EntityFramework.dll 参照を DNX Core 5.0 アセンブリと DNX 4.5.1 アセンブリに追加することで、DbModelBuilder を認識させることができましたが、System.Core の追加と mscorlib を求めるエラーがさらにスローされました。(単純だと思っていた) Web API プロジェクトを作成するのがどれほど大変なことか、本当に信じられません。

4

1 に答える 1

0

モデル ビルダーから HasRequired を呼び出すことはできません。変更するエンティティを指定する必要があります。

public class MyContext: DbContext 
{ 
    public DbSet<Foo> Foos { get; set; } 
    public DbSet<Bar> Bars { get; set; } 

    protected override void OnModelCreating(DbModelBuilder modelBuilder) 
    { 
        modelBuilder.Entity<Foo>().HasRequired(f => f.Bar);   // assumes Bar navigation added to Foo
    } 
} 

https://msdn.microsoft.com/en-us/data/jj591617.aspx?f=255&MSPPError=-2147217396

私がやりたいのは、流暢なコードを次のように分離することです。

    protected override void OnModelCreating(DbModelBuilder modelBuilder) 
    { 
       modelBuilder.Configurations.Add(new FooConfig());
    } 

これで、そのエンティティのすべてのマッピングを使用してクラスを作成できます。

public class FooConfig : EntityTypeConfiguration<Foo>
{
    public FooConfig()
    {
        // Primary Key
        this.HasKey(t => t.FooId);

        // Relationships
        this.HasRequired(f => f.Bar).WithMany(b => b.Foos);

    }
}
于 2016-02-17T22:55:32.767 に答える