2014-05-24 1 views
-1

내 응용 프로그램을위한 작은 DB 부트 스트래핑 유틸리티를 만들고 있습니다. 내 모델 클래스에서 데이터베이스를 만들어야하지만 DB 파일 이름과 위치를 설정할 수 있기를 원합니다.특정 이름과 파일 위치로 EF 6.1에서 새 데이터베이스 만들기

기본 DbContext 인스턴스화를 수행하면 DataAccessModule.DbContext와 같은 이름의 Db를 만들려고 시도하고 DataBase 파일 (mdf 및 ldf)은 Program Files \ SQL ... 폴더에 있습니다. 내 이름 (사용자가 부트 스트래핑 앱의 UI에 입력 한 이름)과 사용자가 선택한 폴더에있는 mdf 및 ldf 파일로 데이터베이스를 만들어야합니다.

어떻게하면됩니까?

+0

지금까지 해보신 것은 무엇입니까? 문제가 무엇입니까? 이런 질문을하기 전에 조금 배우고 시도해야합니다. – JotaBe

+0

이 연결 문자열 나는 ​​이것을 위해 SQL 문을 전달할 DB를 만들 때 사용할 수 있습니다. var sqlConnection = new SqlConnection (@ "Server =. \ SQLEXPRESS; Integrated Security = SSPI;"); 그러나 나는 EF로 이것을 어떻게하는지 모른다. – DarkDeny

+0

개선을 위해 추가 정보로 질문을 업데이트하십시오. – JotaBe

답변

0

는이 같은 ConnectionString을 구축해야합니다

SqlConnectionStringBuilder sqlBldr = new SqlConnectionStringBuilder(); 
sqlBldr.DataSource = "Server name"; 
sqlBldr.InitialCatalog = "Database name"; 
sqlBldr.IntegratedSecurity = true; // or use use + password 
sqlBldr.MultipleActiveResultSets = true; 

EntityConnectionStringBuilder entBldr = new EntityConnectionStringBuilder(); 
entBldr.ProviderConnectionString = sqlBuilder.ToString(); 
entBldr.Metadata = "res://*/"; 
entBldr.Provider = "System.Data.SqlClient"; 

EF의 연결 문자열이 entityBuilder.ToString()입니다. DbContextBuilder에서 사용하기 만하면됩니다. 당신의 전체 경로를 지정할 수있는 파일의 이름과 위치

주를 선택하는

string connectionString = // ... use your connection string builder for this 

using(MyDbContext ctx = new MyDbContext(connectionString)) 
{ 
    // ... 
} 

: 다음

public class MyDbContext 
{ 
    public MyDbContext(strinc connStr) 
     : base(connStr) 
    { 
    } 

    // ... 
} 

과 같이 사용 : 하나 개의 매개 변수가받는 상속 생성자를 노출 서버 + 데이터베이스를 사용하는 대신 SqlConnectionStringBuilder 속성의 AttachDBFilename 속성에있는 .mdf 파일을 사용하십시오. 자세한 내용은 SqlConnectionStringBuilder MSDN docs을 참조하십시오.

그러나 사용자가 폴더를 지정하면 해당 폴더에 대한 읽기/쓰기 권한이 있어야합니다.