【问题标题】:Remove duplicate entries in database using entity framework使用实体框架删除数据库中的重复条目
【发布时间】:2016-11-01 18:25:26
【问题描述】:

我首先使用的是 Entity Framework 6.1 代码。我正在开发一种产品,其中该产品的发布版本在 UserProfile 表的 UserName 列中有重复条目。为了消除这个错误,我在 UserName 字段上使用了 Index 注释。

class UserProfile
{
     [Index("IX",IsUnique=True)]
     string UserName;
     string Id;
 }

所以现在重复条目问题消失了。但我现在没有向后兼容性。就像那些已经在使用发布产品并且在他们的数据库中有重复条目的客户一样,他们不能使用他们现有的数据库。

我使用实体框架创建了一个迁移,它像这样更新数据库

public partial class UserConcurrencyFix : DbMigration
{
     public override void Up()
     {
          CreateIndex("dbo.UserProfiles", "UserName", unique: true);
     }
     public override void Down()
     {
          DropIndex("dbo.UserProfiles", new[] { "UserName" });
     }
 }

这不会处理已经有重复条目的现有数据库。有没有一种方法可以从用户已经使用并有重复条目的数据库中删除重复项?

【问题讨论】:

  • 您真的可以在不丢失数据的情况下自动执行重复数据删除吗?用户不应该在升级之前按照自己的程序处理好这个问题吗?

标签: asp.net sql-server entity-framework


【解决方案1】:

在您的向上迁移方法中,在添加索引之前。使用 Sql() 方法执行脚本。这可以是您想要的任何脚本,因此只需创建一个执行所需重复数据删除的脚本即可。

【讨论】:

    猜你喜欢
    • 2019-08-08
    • 2012-07-25
    • 1970-01-01
    • 2015-03-28
    • 2015-01-10
    • 1970-01-01
    • 1970-01-01
    • 2014-10-02
    相关资源
    最近更新 更多