У меня есть проект, который использует сначала код Entity Framework. Я хотел бы использовать LinQpad для загрузки моей базы данных.Использование метода расширения с LinQPad
Чтобы заполнить базу данных во время операции миграции с Entity Framework Я использую AddOrUpdate() метод расширения:
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"), ... }
);
Когда я пытаюсь сделать то же самое с LINQPad я получаю сообщение об ошибке:
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"), ... }
);
Я получаю эту ошибку:
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 не видят этот метод расширения? Для информации я уже добавил ссылку Nuget на EntityFramework и добавил все пространство имен в пакет управления пакетами Nuget и имён 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