2013-05-01 2 views
0

저는 멀티 테넌트 MVC 4 애플리케이션을 개발 중입니다. 고객 당 하나의 스키마 방식을 사용하려고합니다. 고객이 등록 할 때 코드에서 데이터베이스 마이그레이션을 실행하고 싶습니다. EF 5/Code First Migrations를 사용하면 가능합니까?코드에서 코드를 처음으로 마이그레이션 하시겠습니까?

그래서 고객이 가입하면 dbo에서 계정을 만들게됩니다. 그런 다음 하위 도메인이 데이터베이스의 스키마로 존재하는지 확인하고 그렇지 않은 경우 스키마를 만들고 이상적으로 마이그레이션을 실행합니다.

감사합니다.

나는 데이터베이스에 고객에 대한 새로운 스키마를 만들

명확한 설명은, 그 새로운 스키마에 대한 마이그레이션을 실행합니다. 예를 들어,

저는 schema1.Products 및 schema2.Products가 있습니다. 신규 고객이 가입 할 때마다

packages\EntityFramework.5.0.0\tools\migrate.exe Example.dll /startUpDirectory:Example\bin 

그래서 이론이 부를 수있는이 당신이 명령 줄에서 코드 마이그레이션을 실행할 수 있습니다 요구하는지 경우

답변

2

나는 그것을 얻고 있다면 ... 나는 당신의 접근 방식으로 볼 수있는 문제가 거라고는 '별도의'계정 모델/데이터베이스에있는 것이다 광산의이 게시물 ...

What is the correct use of IDatabaseInitializer in EF?

How to create initializer to create and migrate mysql database?


을 확인 - 그리고 당신이 옮기려고하는 것
. 이미 그럴 수도있는 멀티 테넌트를 언급 한 이래로

하지만 계정에 대한 '기본 엔터티'를 crete 할 수도 있습니다. 그런 다음 나머지를 맨 위에 마이그레이션하십시오. 이것은 다소 복잡한 시나리오입니다. 모델은 시작 (처음 사용)에서 한 번 (연결 당) 만들어지고 이후부터 캐시됩니다. 그래서 재부팅을 다시 시작하는 것이 좋을 것 같습니다. (내 말을 믿지 마시고 큰 소리로 생각해보십시오.)

+0

계정과 계정 같은 기본 엔터티에 대한 마이그레이션을 사용하면됩니다. SQL 스 크립트를 실행하여 스키마 및 스키마와 관련된 다른 테이블을 작성하십시오. 두 가지 다른 마이그레이션 클래스가 있으면 좋을 것입니다. – Mike

+0

(사용자 정의 이니셜 라이저를 사용하여) 주 Q에 효과적으로 응답합니다. 나머지는 너무 구체적이지만, 이미 내가했던 것보다 더 현명한 것을 말할 수는 없습니다. '두 가지 다른 ... '에 관해서는, 마이그레이션은 대부분'싱글 톤 '입니다 (마이그레이션 += 구성 + 스크립트 + 연결 + Db + __MigrationHistory sys 테이블). 나는 두 개의 라이브러리에서 두 개를 가질 수 있다고 생각하지만, 'db가 2 개'가되어야합니다 (db의 마이그레이션 테이블의 원인). 다중 거주자가 아닙니다 (EF6에 포함됨). – NSGaga

0

확실하지. 예를 들어, -

당신은 더 나은 자신을 initializer 만들 수도 있습니다

var migrator = new DbMigrator(new Configuration()); 
if (migrator.GetPendingMigrations().Any()) 
    migrator.Update(); 

또는 같은 것을 사용할 수 있습니다 당신이 원하는 옳은 일을

관련 문제