【发布时间】:2014-12-16 13:06:40
【问题描述】:
当我使用 db-migration 更新我的数据库时,我遇到了一个问题
Automatic migration was not applied because it would result in data loss.
(对于某些属性,我使用了System.ComponentModel.DataAnnotations,例如[Required] 和[StringLength(25)]。例如Title 属性。)
我知道如果我将AutomaticMigrationDataLossAllowed 设置为true 和Update-Database -Force,我的数据库将被更新,但我的数据将被删除,我将阻止它。我想保护我的数据。
我用过 Entity Framework 6.x
我该如何解决这个问题?
配置类:
namespace Jahan.Blog.Web.Mvc.Migrations
{
using System;
using System.Data.Entity;
using System.Data.Entity.Migrations;
using System.Linq;
internal sealed class Configuration
: DbMigrationsConfiguration<Jahan.Blog.Web.Mvc.Models.JahanBlogDbContext>
{
public Configuration()
{
AutomaticMigrationsEnabled = true;
AutomaticMigrationDataLossAllowed = false;
}
protected override void Seed(Jahan.Blog.Web.Mvc.Models.JahanBlogDbContext context)
{
}
}
}
初始类:
namespace Jahan.Blog.Web.Mvc.Migrations
{
using System;
using System.Data.Entity.Migrations;
public partial class Initial : DbMigration
{
public override void Up()
{
}
public override void Down()
{
}
}
}
我的 DbContext:
namespace Jahan.Blog.DataAccess
{
public class JahanBlogDbContext : IdentityDbContext<User, Role, int, UserLogin, UserRole, UserClaim>
{
public JahanBlogDbContext()
: base("name=JahanBlogDbConnectionString")
{
}
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Conventions.Remove<PluralizingTableNameConvention>();
modelBuilder.Entity<Comment>().HasRequired(t => t.Article).WithMany(t => t.Comments).HasForeignKey(d => d.ArticleId).WillCascadeOnDelete(true);
base.OnModelCreating(modelBuilder);
modelBuilder.Entity<User>().ToTable("User");
modelBuilder.Entity<Role>().ToTable("Role");
modelBuilder.Entity<UserRole>().ToTable("UserRole");
modelBuilder.Entity<UserLogin>().ToTable("UserLogin");
modelBuilder.Entity<UserClaim>().ToTable("UserClaim");
}
// ... codes ....
}
}
【问题讨论】:
标签: database entity-framework entity-framework-6 database-migration