2016-11-01 3 views
0

먼저 Entity Framework 6.1 코드를 사용하고 있습니다. 나는 거기에있는 제품의 릴리스 버전 사용자 이름 열에 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

색인을 추가하기 전에 Up 이전 메소드에서. Sql() 메서드를 사용하여 스크립트를 실행합니다. 원하는 스크립트 일 수 있으므로 원하는 중복 제거를 수행하는 스크립트를 작성하면 모든 설정이 완료됩니다.

관련 문제