2016-05-28 19 views
0

に言及私はカスタムDBInitializerとASP MVCアプリケーションを記述しようとしていますが、私はエラーを取得しています:エンティティフレームワーク6:のUserProfile

Additional information: The member with identity 'MailMail.Models.MailDbContext.Video_UserProfile' does not exist in the metadata collection.

私はVideoクラスを持っている:

public class Video : Entity 
{ 
    public string Name { get; set; } 
    public string Path { get; set; } 
    public virtual UserProfile UserProfile { get; set; } 
} 

そして、私のDBInitializer:

public class MailDbInitializer : DropCreateDatabaseAlways<MailDbContext> 
    { 
     protected override void Seed(MailDbContext context) 
     { 
      UsersContext userContext = new UsersContext(); 

      if (!WebMatrix.WebData.WebSecurity.Initialized) 
      { 
       WebSecurity.InitializeDatabaseConnection("DefaultConnection", "UserProfile", "UserId", "UserName", autoCreateTables: true); 
      } 


      var mongol1 = new { Email="[email protected]", UserName="Tom"}; 
      var mongol2 = new { Email = "[email protected]", UserName = "Karola" }; 
      WebSecurity.CreateUserAndAccount(mongol1.UserName, "secret", mongol1); 

      Task<UserProfile> user1Task = userContext.UserProfiles.SingleOrDefaultAsync(o => o.UserName == mongol1.UserName); 
      user1Task.Wait(); 
      UserProfile user1 = user1Task.Result; 

      WebSecurity.CreateUserAndAccount(mongol2.UserName, "123456", mongol2); 
      Task<UserProfile> user2Task = userContext.UserProfiles.SingleOrDefaultAsync(o => o.UserName == mongol2.UserName); 
      user2Task.Wait(); 
      UserProfile user2 = user1Task.Result; 



      Video video1 = new Video() {Name="Moje wideo", UserProfile=user1, Path = "~/App_Data/"+user1.UserId+"/Video1"}; 
      Video video2 = new Video() { Name = "Moje wideo", UserProfile = user1, Path = "~/App_Data/" + user1.UserId + "/Video2" }; 
      Video video3 = new Video() { Name = "Moje wideo", UserProfile = user2, Path = "~/App_Data/" + user2.UserId + "/Video3" }; 
      Video video4 = new Video() { Name = "Moje wideo", UserProfile = user2, Path = "~/App_Data/" + user2.UserId + "/Video4" }; 

      context.Videos.Add(video1); //HERE ocures the error! 
      context.Videos.Add(video2); 

私はそれが異なる文脈とは関係があると思います。私は正しい?

答えて

0

問題は2つの異なるコンテキストがあり、両方が同じデータベースを指しているということでした。 私のソリューションでした:私はちょうど私のメインDBContextクラスに

public DbSet<UserProfile> UserProfiles { get; set; } 

をコピーしました。 それが問題を解決しました:-)

関連する問題