Entity Framework
SQLite로 엔티티 프레임 워크
수색…
소개
SQLite 는 독립적 인 서버리스 (serverless) 트랜잭션 SQL 데이터베이스입니다. 무료로 사용할 수있는 .NET SQLite 라이브러리와 Entity Framework SQLite 공급자를 모두 사용하여 .NET 응용 프로그램 내에서 사용할 수 있습니다. 이 항목에서는 Entity Framework SQLite 공급자의 설정 및 사용법에 대해 설명합니다.
SQLite 공급자와 함께 Entity Framework를 사용하도록 프로젝트 설정
Entity Framework 라이브러리는 SQL Server 공급자와 함께 제공됩니다. SQLite를 사용하려면 추가 종속성과 구성이 필요합니다. NuGet에서 필요한 모든 의존성을 사용할 수 있습니다.
SQLite 관리 라이브러리 설치
Mananged Depedencies는 모두 NuGet Package Manager Console을 사용하여 설치할 수 있습니다. Install-Package System.Data.SQLite
명령을 실행합니다.
위에 표시된 것처럼 System.Data.SQLite
설치할 때 관련된 모든 관리 라이브러리가 함께 설치됩니다. 여기에는 SQLite 용 EF 공급자 인 System.Data.SQLite.EF6
이 포함됩니다. 또한 프로젝트는 이제 SQLite 공급자를 사용하는 데 필요한 어셈블리를 참조합니다.
비 관리 라이브러리 포함
SQLite 관리 라이브러리는 SQLite.Interop.dll
이라는 관리되지 않는 어셈블리에 종속됩니다. 이 패키지는 SQLite 패키지와 함께 다운로드 된 패키지 어셈블리에 포함되어 있으며 프로젝트를 빌드 할 때 빌드 디렉토리에 자동으로 복사됩니다. 그러나 관리되지 않으므로 참조 목록에 포함되지 않습니다. 그러나이 어셈블리는 SQLite 어셈블리가 작동하는 응용 프로그램과 함께 배포되어야합니다.
참고 :이 어셈블리는 비트 종속적입니다. 즉, 지원하려는 각 비트 니스 (x86 / x64)에 대해 특정 어셈블리를 포함해야합니다.
프로젝트의 App.config 편집하기
SQLite를 Entity Framework 공급자로 사용하려면 app.config
파일을 수정해야합니다.
필수 수정 사항
패키지를 설치할 때 app.config
파일은 SQLite 및 SQLite EF에 필요한 항목을 포함하도록 자동으로 업데이트됩니다. 불행히도 이러한 항목에는 몇 가지 오류가 있습니다. 올바르게 작동하려면 수정해야합니다.
먼저 구성 파일에서 DbProviderFactories
요소를 찾습니다. 그것은 system.data
요소 내에 있으며 다음을 포함합니다
<DbProviderFactories>
<remove invariant="System.Data.SQLite.EF6" />
<add name="SQLite Data Provider (Entity Framework 6)" invariant="System.Data.SQLite.EF6" description=".NET Framework Data Provider for SQLite (Entity Framework 6)" type="System.Data.SQLite.EF6.SQLiteProviderFactory, System.Data.SQLite.EF6" />
<remove invariant="System.Data.SQLite" /><add name="SQLite Data Provider" invariant="System.Data.SQLite" description=".NET Framework Data Provider for SQLite" type="System.Data.SQLite.SQLiteFactory, System.Data.SQLite" />
</DbProviderFactories>
단일 항목을 포함하도록 단순화 할 수 있습니다.
<DbProviderFactories>
<add name="SQLite Data Provider" invariant="System.Data.SQLite.EF6" description=".NET Framework Data Provider for SQLite" type="System.Data.SQLite.SQLiteFactory, System.Data.SQLite" />
</DbProviderFactories>
이것으로, 우리는 EF6 SQLite 제공자가 SQLite 팩토리를 사용해야한다고 지정했습니다.
SQLite 연결 문자열 추가
연결 문자열은 루트 요소 내의 구성 파일에 추가 할 수 있습니다. SQLite 데이터베이스에 액세스하기위한 연결 문자열을 추가하십시오.
<connectionStrings>
<add name="TestContext" connectionString="data source=testdb.sqlite;initial catalog=Test;App=EntityFramework;" providerName="System.Data.SQLite.EF6"/>
</connectionStrings>
여기서 주목해야 할 중요한 것은 provider
입니다. System.Data.SQLite.EF6
으로 설정되었습니다. 이것은 우리가이 연결 문자열을 사용할 때 우리가 SQLite를 사용하고 싶어한다는 것을 EF에 알려줍니다. 지정된 data source
는 예제 일 뿐이며 SQLite 데이터베이스의 위치와 이름에 따라 달라집니다.
첫 번째 SQLite DbContext
모든 설치 및 구성이 완료되면 이제 SQLite 데이터베이스에서 작동하는 DbContext
를 사용할 수 있습니다.
public class TestContext : DbContext
{
public TestContext()
: base("name=TestContext") { }
}
name=TestContext
를 지정하면 app.config
파일에있는 TestContext 연결 문자열을 사용하여 컨텍스트를 생성해야 함을 나타냅니다. 이 연결 문자열은 SQLite를 사용하도록 구성되었으므로이 컨텍스트는 SQLite 데이터베이스를 사용합니다.