2015-06-17 2 views
1

Я настраивал код первой миграции для изменения модели из Package Manager Console, которая создает seed метод в Configuration.cs. я разместил свой код в Seed метод, и он показывает ошибку в context.Movies.AddorUpdate (-----Как решить ошибку в Configuration.cs в коде первой миграции

он говорит :

Аргументы типа для метода «System.Data. Entity.Migrations.DbSetMigrationsExtensions.AddOrUpdate (System.Data.Entity.IDbSet, Params TEntity [])»не может быть выведено из эксплуатации. Попробуйте указать аргументы типа явно.

protected override void Seed(MvcMovie.Models.MovieDbContext context) 
{ 
    context.Movies.AddOrUpdate(
    i => i.Title, 
     new Movie 
     { 
      Title = "When Harry Met Sally", 
      ReleaseDate = DateTime.Parse("1989-1-11"), 
      Genre = "Romantic Comedy", 
      Price = 7.99M 
     }, 

     new Movie 
     { 
      Title = "Ghostbusters ", 
      ReleaseDate = DateTime.Parse("1984-3-13"), 
      Genre = "Comedy", 
      Price = 8.99M 
     }, 

     new Movie 
     { 
      Title = "Ghostbusters 2", 
      ReleaseDate = DateTime.Parse("1986-2-23"), 
      Genre = "Comedy", 
      Price = 9.99M 
     } 
    ); 
} 

Movie.cs

namespace MvcMovie.Models 
{ 
    public class Movie 
    { 
     public int ID 
     { 
      get; 
      set; 
     } 
     public string Title 
     { 
      get; 
      set; 
     } 

     [Display(Name="ReleaseDate")] 
     [DataType(DataType.Date)] 
     [DisplayFormat(DataFormatString = "{0:d}", ApplyFormatInEditMode = true)] 
     public DateTime ReleaseDate 
     { 
      get; 
      set; 
     } 
     public string Genre 
     { 
      get; 
      set; 
     } 
     public decimal Price 
     { 
      get; 
      set; 
     } 

    } 
    public class MovieDbContext : DbContext 
    { 
     public DbSet<Movie> Movies { get; set; } 
    } 
} 
+0

Трудно сказать, не видя больше кода, как ваш класс MovieDbContext, но добавляя context.Movies.AddOrUpdate Можете решить проблему. – swestner

+0

попробовал. Не работает @swestner –

+0

Что такое типовой тип для фильмов DbSet {T}? Вы можете вставить код для класса MovieDbContext. –

ответ

2

Ошибка вы видите, вероятно, из-за вас, имеющих несколько классов, называемых Movie. Я предлагаю вам взглянуть на ваши пространства имен и using, чтобы убрать это. Но, если вы не можете изменить их, указать тип явно с помощью полного пространства имен (я предполагаю, что пространство имен, чтобы использовать здесь, возможно, потребуется «другой» один!):

context.Movies.AddOrUpdate(
    i => i.Title, 
    new MvcMovie.Models.Movie 
     //^^^^^^^^^^^^^^^^^^^^^ Note the full namespace here 
    { 
     Title = "When Harry Met Sally", 
     ReleaseDate = DateTime.Parse("1989-1-11"), 
     Genre = "Romantic Comedy", 
     Price = 7.99M 
    }, 
    //Snip rest of code 
); 
+0

это сработало .. спасибо, сэр. –

Смежные вопросы