2012-03-01 5 views
3

우리는 Entity Framework 4 (코드 우선) 및 Fluent Migrator를 사용하는 프로젝트 작업을하고 있습니다. 프로젝트 전반에 걸쳐가는FluentMigrator에서 코드 및 상태 값을 추가하는 가장 좋은 방법은 무엇입니까?

, 우리는 우리가 우리의 다양한 환경에서 채워 원하는 테스트 데이터에 대한 우리의 스키마의 모든 변경 및 프로파일에 대한을 마이그레이션을 만들었습니다.

그러나 우리의 모든 환경에 필요한 "코드"및/또는 "상태"를 삽입하는 가장 좋은 방법은 무엇입니까? 테이블을 생성하는 동안 테이블을 지정해야합니까? 아니면 테이블에 대한 특정 프로필을 만들어야합니까?

더 구체적으로, 우리는 주소 유형에 대한 "코드"표과 같이 우리의 데이터베이스에 대해 정의 :

[Migration(22)] 
public class M0022_CreateAddressTypesTable : Migration 
{ 
    public override void Up() 
    { 
     Create.Table("AddressTypes") 
      .WithColumn("Id").AsInt32().NotNullable().PrimaryKey() 
      .WithColumn("Name").AsString(50).NotNullable().WithDefaultValue(string.Empty) 
      .WithColumn("Description").AsString(100).NotNullable().WithDefaultValue(string.Empty); 
    } 

    public override void Down() 
    { 
     Delete.FromTable("AddressTypes"); 
     Delete.Table("AddressTypes"); 
    } 
} 

를 그래서 우리는 또한 우리의 데이터와 AddressTypes 테이블을 채울 수있는이 기회를 사용해야합니까? 아니면 우리는 이것을 어떤 종류의 프로파일로 추상화해야합니까?

두 가지의 장점과 단점이 있으므로 다른 팀이 이러한 유형의 상황을 어떻게 처리하는지 듣고 싶습니다.

+0

무엇을 했습니까? 우리는 같은 문제가 있습니다 ... –

답변

2

모든 환경에서 필요하다고 확신하는 경우 개인적으로 "참조 데이터"를 프로필 클래스가 아닌 마이그레이션 클래스에 넣습니다.

프로필 => 특정 (테스트, 기타)

마이그레이션 => 일반 datas

특정 프로필에만 추가 할 datas :

유지 & 코드를 이해처럼, 간단한 규칙을 항상 쉽게 쓸모없는 복합성 (나의 겸손한 관점).

+1

나는 아직도 앞뒤로갑니다. 예를 들어 코드 및/또는 상태 값이 추가 된 위치를 확인하려면 거의 모든 이전 파일을 스캔해야합니다. 단일 파일에 있다면 한 곳에서 관리하기 쉽습니다. 실제로 유지 관리 및 코드 이해가 향상됩니다. –

+0

그럼, "삽입 메소드"가있는 하나의 정적 클래스를 만들어 다른 마이그레이션 클래스에서 호출하면 어떨까요? 존재하지 않는 테이블에 대한 데이터를 추가 할 수 없으므로 한 곳에서 "구체적인 삽입"을 사용하고 필요에 따라 이러한 삽입을 호출합니다. –