2011-10-28 3 views
0

모델에서 데이터베이스를 만드는 방법에 대해 몇 가지 질문이 있습니다.모델의 Entity Framework 데이터베이스

런타임에이를 수행 할 수 있습니까? 디자이너에서 SQL을 생성 할 수 있지만 런타임 중에는 생성 할 수 있다는 것을 알고 있습니까?

연결을 만들지 않고 DDL을 만들 수 있습니까? DDL을 만드는 유일한 목적으로 연결을 추가하기가 짜증이납니다.

변경 사항을 자동으로 처리하는 방법이 있습니까? 엔티티/테이블을 업데이트하는 경우 테이블을 수동으로 변경해야하며 그렇지 않으면 처리 할 항목이 있습니까?

sqlce의 EntityContext.CreateDatabase는 어떻게됩니까? 내가 그것을 부를 때 나는 문맥을 다르게 만들어야한다. 그렇지 않으면 나는 이미 존재하는 테이블을 만들 수 없다. 그러나 삽입 된 데이터가 저장되지 않기 때문에 실제로 존재하지 않습니다.

답변

2

물론입니다. 데이터베이스가 당신이 당신의 생성자에서 을 지정한 경우에 그것을 만들 것입니다 존재하지 않는 경우 :

 

static EntityContext() 
{ 
//for example to create a db: 
Database.SetInitializer(new CreateDatabaseIfNotExists()); 
} 
 

당신은 컨텍스트를 다시 무엇을 의미합니까? 데이터베이스를 지정하는 경우. 초기화시 SQL CE 데이터베이스가 생성됩니다. 불행하게도이 모델은 초기 변경 원인이됩니다. 향후 변경 사항은 데이터베이스와 모델 모두에 적용될 필요가 있습니다.

귀하의 SQL의 CE 연결 문자열과 같은 것입니다 : '이름이'컨텍스트 클래스의 풀 네임 스페이스와 일치해야

<add name="EntityDemoSite.DataAccess.EntityContext" connectionString="Data Source=|DataDirectory|test.sdf" providerName="System.Data.SqlServerCe.4.0" /> 

참고.

+0

마지막 질문에 신경 쓰지 마라. linq2sql 만 다루면된다. SqlCe EF는 CreateDatabase에 대한 호출을 지원하지 않습니다. 그렇다면 데이터베이스/모델 업데이트를 쉽게 수행 할 수있는 방법이 있습니까? 기존 엔티티에 몇 가지 속성을 추가한다고 해봅시다. 이러한 열이없는 이전 데이터베이스에서는 어떻게 작동합니까? – Will

+0

"Database.SetInitializer (새 CreateDatabaseIfNotExists ());"시도했습니다. " 하지만 여전히 "데이터베이스 파일을 찾을 수 없습니다." – Will

+0

이제는 데이터베이스 파일을 만드는 데 SqlCeEngine을 사용합니다. 기본적으로 – Will

관련 문제