NHibernate 스키마 생성으로 데이터베이스 테이블 스키마를 업데이트하는 방법은 무엇입니까?
테이블 스키마를 삭제하고 다시 만드는 대신 매핑과 함께 NHibernate 구성을 사용하여 테이블 스키마를 업데이트하는 방법을 알아 내려고합니다.
현재 저는 NHibernate.Tool.hbm2ddl.SchemaExport
FluentNHibernate와 함께 obj를 사용하여 mysql 데이터베이스에 대한 데이터베이스 스키마를 생성하고 있습니다. 큰 문제라고 말할 수는 없지만 SchemaExport.Execute
데이터베이스를 호출 할 때마다 모든 테이블을 삭제 한 다음 다시 만들 것입니다.
가능한 한 데이터를 유지하는 기존 테이블 구조를 업데이트 할 수 있다면 더 멋진 방법이 될 것입니다. 그러나 저는 일반적으로 코드 생성을 좋아하지 않기 때문에 상용 제품이나 코드 생성기를 사용하고 싶지 않으며 비용을 지불 할만큼 충분히 필요하지 않습니다. 따라서 모든 답변이 이러한 경고를 염두에두기를 바랍니다.
들 SchemaUpdate 객체는 분명히 생성하고 일련의 실행하여 데이터베이스 스키마 업데이트를 제공하는 SQL UPDATE의 그것의 문 (뿐만 아니라 제약 문) void Execute(bool script, bool doUpdate)
함수가 호출됩니다. SchemaUpdate 클래스는 NHibernate.Tool.hbm2ddl
Nhibernate.dll 파일에서 찾을 수있는 네임 스페이스에 있습니다.
SchemaUpdate는 nhibernate 1.0.2 도구 세트 가이드의 15 장에 언급되어 있습니다 (섹션 15.1.5).
"NHibernate FAQ"에는 SchemaUpdate를 사용하는 방법에 대한보다 완전한 예제가 있습니다.
[Test]
public void Update_an_existing_database_schema()
{
_cfg = new Configuration();
_cfg.Configure();
_cfg.AddAssembly(Assembly.LoadFrom("DataLayer.dll"));
var update = new SchemaUpdate(_cfg);
update.Execute(true, false);
}
'programing' 카테고리의 다른 글
ASP.NET Core MVC 개발에 AddMvc 또는 AddMvcCore를 사용해야합니까? (0) | 2021.01.15 |
---|---|
어떤 Eclipse Subversion 플러그인을 사용해야합니까? (0) | 2021.01.15 |
2 개의 C # 프로세스 간 프로세스 간 통신의 가장 간단한 방법은 무엇입니까? (0) | 2021.01.15 |
메서드에서 열거 형을 로컬로 선언 할 수없는 이유는 무엇입니까? (0) | 2021.01.15 |
Eclipse에서 git의 두 개정판을 어떻게 비교할 수 있습니까? (0) | 2021.01.15 |