2013-10-11 54 views
1

我使用代碼優先方法創建數據庫(即創建包含名爲「users」的表的「User.mdf」文件)。如何添加表並將數據保存到現有數據庫

我添加了一個新的模式:

public class Picture 
{ 
    public int pictureId { get; set; } 
    public int userId { get; set; } 
    public string pictureUrl { get; set; } 
} 

public class PictureDBContext : DbContext 
{ 
    public DbSet<Picture> Pictures { get; set; } 
} 

並試圖在新表中的數據保存這樣的:

Picture curentImage = new Picture(); 
     curentImage.userId = int.Parse(Session["userId"].ToString()); 
     curentImage.pictureUrl = "/MyImages" + filename; 

     if (ModelState.IsValid) 
     { 
      db.Pictures.Add(curentImage); 
      db.SaveChanges(); 
     } 

我預計它將爲圖片的新表(因爲它在用戶模型中工作)...

製作「EF魔術師」也需要知道這個模型 並在現有數據庫中創建並添加Pictures表? 如果可能,我們很高興能以正確的方式將數據保存到新表格,並提供一些解釋。

+0

究竟是什麼問題?有什麼不工作? –

+0

我認爲標題就足夠作爲一個問題,但我會編輯消息以包含問題。 – MatanGold

回答

0

您是可能是因爲遷移已關閉而出現錯誤。

您可以編寫自己的遷移程序來添加新表格,也可以先使用EF代碼的automigrate功能。

如果你想編寫自己的遷移代碼,你可以在這個博客上閱讀自己做到這一點:如果要啓用自動遷移 Code First Migrations

。你可以添加這個配置類,它應該做的伎倆。

internal sealed class PictureDBContextConfiguration : DbMigrationsConfiguration<PictureDBContext> 
{ 
    public PictureDBContextConfiguration() 
    { 
     AutomaticMigrationsEnabled = true; // This will allow CodeFirst to create the missing tables/columns 
     AutomaticMigrationDataLossAllowed = true; //This will allow CodeFirst to Drop column or even drop tables 
    } 
} 
+0

感謝您的回答。將你的代碼添加到我的Picture類中,但仍然沒有創建表。我知道我得到一個圖片對象的權利,那麼我的代碼是: 'if(ModelState.IsValid) { db.Pictures.Add(curentImage); db.SaveChanges(); } ' 這樣好嗎? – MatanGold

+0

好吧,你可以發佈你收到的錯誤消息嗎? –

+0

你可以在這裏看到: [鏈接](http://postimg.org/image/wok1xzuzb/) – MatanGold

相關問題