1

사용자 권한에 대한 기본 데이터를 얻기 위해 내 프로젝트에서 DbMigrationConfiguration 시드 메서드를 재정의했습니다. 현재 마이 그 레이션이 실행될 때마다 데이터가 덮어 씁니다.값을 덮어 쓰지 않고 EF6의 시드 메서드

protected override void Seed(MyDbContext dbContext) 
{ 
    List<Permission> permissions = PermissionFactory.CreatePermissions(); 
    dbContext.Permissions.AddOrUpdate(permissions);    
} 

및 사용 권한 개체 : 나는 그 데이터를 한 번만 기록 할 그들이 경우에만 새 항목이 추가하고 싶은

public class Permission 
{ 
    public Guid Id { get; set; } 
    public string Role { get; set; } 
    public bool Allow { get; set; } 
} 

여기

내가 지금 뭘하는지입니다 현재 테이블에있는 ID와 다른 ID가 있어야합니다. 마이그레이션을 실행할 때마다 내 권한이 재설정되지 않도록 어떻게해야합니까?

답변

1

내가 원하는 것은 AddIfNotExists이라고 생각하십니까?

public static class EntityFrameworkExtension 
{ 
    public static void AddIfNotExists<T>(
     this IDbSet<T> t, Func<T, object> func, params T[] objectsToAdd) 
     where T : class 
    { 
     foreach (var obj in objectsToAdd 
      .Where(obj => !t.Select(func).Contains(func.Invoke(obj)))) 
       t.Add(obj); 
    } 
} 

그래서 당신은

dbContext.Permissions.AddIfNotExists(p=>p.Id, 
    new Permission{/*values*/}, 
    new Permission{/*values*/}, 
    new Permission{/*values*/} 
); 

에만 새 항목으로 호출 할 수는 내가 찾던 정확히 무엇을

+1

추가됩니다. 감사합니다 –

+0

당신을 환영합니다! –