2013-10-11 56 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

相关问题