まず、Entity Frameworkコードを使用するプロジェクトがあります。 LinQpadを使用してデータベースをシードしたいと思います。私はLinqPadと同じことをしようとすると、私はエラーを取得するLinQPadでの拡張メソッドの使用
context.Rule.AddOrUpdate(
y => y.Id,
new Rule() { Id = Guid.Parse("b9b4fc65-fd0b-4f7f-aa27-3147c7665d27"), ... },
new Rule() { Id = Guid.Parse("66d27186-8be4-4ce2-8a74-737576e7157b"), ... }
);
:
Rules.AddOrUpdate(
y => y.Id,
new Rules() { Id = Guid.Parse("b9b4fc65-fd0b-4f7f-aa27-3147c7665d27"), ... },
new Rules() { Id = Guid.Parse("66d27186-8be4-4ce2-8a74-737576e7157b"), ... }
);
私はAddOrUpdate()拡張メソッドを使用するエンティティフレームワークに移行操作中にデータベースをシードするには
私はこのエラーを取得する:
CS1929 'Table<Rules>' does not contain a definition for 'AddOrUpdate' and the best extension method overload 'DbSetMigrationsExtensions.AddOrUpdate<Rules>(IDbSet<Rules>, params Rules[])' requires a receiver of type 'IDbSet<Rules>'
LinqPadは、この拡張メソッドが表示されないのはなぜ?私はすでにEntityFrameworkへのNugetのリファレンスを追加し、NugetパッケージのmanagetとLinqPadの名前空間インポートにすべての名前空間を追加しました。
私はこの
System.Data.Entity.Migrations.DbSetMigrationsExtensions.AddOrUpdate(
Rules as System.Data.Entity.IDbSet<Rules>,
y => y.Id,
new Rules() { Id = Guid.Parse("b9b4fc65-fd0b-4f7f-aa27-3147c7665d27"), ... },
new Rules() { Id = Guid.Parse("66d27186-8be4-4ce2-8a74-737576e7157b"), ... }
);
のように同じコードを書くことを試みたと私はこのエラーを取得する:
CS0039 Cannot convert type 'System.Data.Linq.Table<LINQPad.User.Rules>' to 'System.Data.Entity.IDbSet<LINQPad.User.Rules>' via a reference conversion, boxing conversion, unboxing conversion, wrapping conversion, or null type conversion
私のオブジェクトルールのタイプがあるので、だから私は、拡張メソッドが動作していないと思います正しくありません。 LinqPadは独自のオブジェクト型を使用しているため、変換できません。
あなたの接続では、 '自分のアセンブリから型付きデータコンテキストを使用するのではなく、'自動的にデータ構造を構築する 'オプションを使用していますか? – sgmoore