2016-11-01 9 views
0

まず、Entity Framework 6.1コードを使用しています。私はそこにある製品のリリース版が、UserName列のUserProfileテーブルに重複している製品で作業しています。このバグを削除するには、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" }); 
    } 
} 

このようにデータベースを更新します。すでにユーザーによって使用されているデータベースから重複を削除し、重複するエントリを持つ方法はありますか?

+0

実際にこの重複排除をデータ損失なしで自動化できますか?アップグレードする前に、ユーザーが自分の手順に従って世話をしてはいけませんか? –

答えて

1

アップ移行方法で、インデックスが追加される前に。 Sql()メソッドを使用してスクリプトを実行します。これは任意のスクリプトにすることができますので、目的の重複排除を行うスクリプトを作成してください。すべて設定されています。

関連する問題