C# AppDomain에서 DataDirectory 세팅하기
ASP.NET에서는 Framework단에서 세팅되는 DataDirectory의 값이 WPF나 Winform, Console Application 에서는 세팅이 되어 있지 않는다. 그래서 EF를 통해 SDF(Compact SQL) 파일이나 LocalDB를 통해 동적으로 DB를 생성시 전혀 엉뚱한 곳에서 물리적인 파일이 생성이 된다. EF를 통해 생성시 AppDomain의 DataDirectory의 값으로 위치를 찾아 파일을 만든다.
아래와 같이 AppDomain에 값을 저장할 수 있다.
AppDomain.CurrentDomain.SetData("DataDirectory", System.IO.Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "App_Data"));
[코드1] AppDomain의 DataDirectory에 값 세팅
"코드1"에서와 같이 세팅 후 "코드2"와 같이 실행하면 AppConfig에 설정된 값을 기준으로 DB 파일을 만들게 된다.
using (ContentContext context = new ContentContext()) { var content = context.Contents.FirstOrDefault(); }
[코드2] DBContext를 통해 데이터 생성
<entityFramework> <defaultConnectionFactory type="System.Data.Entity.Infrastructure.SqlCeConnectionFactory, EntityFramework"> <parameters> <parameter value="System.Data.SqlServerCe.4.0" /> <parameter value="|DataDirectory|"/> <!-- 주석처리 가능 --> <parameter value=""/> <!-- 주석처리 가능 --> </parameters> </defaultConnectionFactory> <providers> <provider invariantName="System.Data.SqlClient" type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer" /> <provider invariantName="System.Data.SqlServerCe.4.0" type="System.Data.Entity.SqlServerCompact.SqlCeProviderServices, EntityFramework.SqlServerCompact" /> </providers> </entityFramework>
[코드3] App.Config에서 entityframework 섹션 내용
"코드3"의 "Parameter"의 값을 기준으로 파일을 생성하게 된다.
'.Net Framework' 카테고리의 다른 글
C#에서 Enum 타입을 다중값으로 활용 - Flags Attribute (0) | 2014.05.21 |
---|---|
인터넷에서 프로그래밍 정보 얻는 사이트 - 영어 사이트 (0) | 2014.01.06 |
C#에서 실행되는 폴더 알아 내기 - 윈도우 서비스, 테스트 프로젝트 (0) | 2013.12.24 |
[C#] Windows 7 이후 추가된 Task Bar에서 Application Title 변경 하기 #1 - JumpList, Taskbar, Application Title (2) | 2013.10.21 |
Visual Studio Magagine - Windows 8, Visual Studio, HTML5 & Javascript Tutorials (0) | 2013.10.18 |