在 C# 中使用实体模型(Entity Framework)一般使用 MSSQL 数据库,这也是 vs2010 的默认方式。

SQLite 作为一种轻型数据库,实现了 SQL92 标准的大部分规定,利用 .net 连接库,可以与实体模型配合使用。以下是需要准备的环境:
  1. Vs2010 + .Net Framework 4
  2. System.Data.SQLite,下载地址。开发环境需要安装 Setups for 32-bit Windows (.NET Framework 4.0),发布时只需要打包  Precompiled Binaries for 32-bit Windows (.NET Framework 4.0)中的两个文件(System.Data.SQLite.dll 和 System.Data.SQLite.Linq.dll)。
  3. 如果需要从模型生成 DDL,需要下载 SSDLToSQLite3,解压缩后放到 C:\Program Files\Microsoft Visual Studio 10.0\Common7\IDE\Extensions\Microsoft\Entity Framework Tools\DBGen(随 Vs2010 安装位置有所不同)。
  4. EF Power Tools Beta 3,在 Vs2010 的扩展管理器中下载安装。
  5. DbContext Generator,下载地址
SQLite 不支持 Code First。变通的办法是使用 MsSql 实现 Code First 的 POCO 类定义,然后将生成的 Edmx 文件保存到另外的工程中实现 Model First。生成的 Edmx 需要手动将其中的 中的 Provider 改为 System.Data.SQLite。
使用 Nuget 将 EntityFramework 安装到当前工程时,会自动添加 App.Config 文件。需要添加以下内容:
  <connectionStrings>
    <add name="MyModels" 
connectionString
="metadata=res://*/MyModels.csdl|res://*/MyModels.ssdl|res://*/MyModels.msl;provider=System.Data.SQLite;provider connection string=&quot;Data Source=MyModels.db3;Version=3;&quot;" providerName="System.Data.EntityClient" /> </connectionStrings> <system.data> <DbProviderFactories> <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, Version=1.0.84.0, Culture=neutral, PublicKeyToken=db937bc2d44ff139"/> </DbProviderFactories> </system.data>

Code First 中使用 EntityTypeConfiguration 语法无法定义字段的默认值,需要修改数据库的 DDL 定义,或者在 Edmx 文件生成的实体类中添加初始值设置。注意不能直接修改自动生成的类文件,当 edmx 文件改动后会重新生成实体类定义,导致改动丢失。应该在同一文件夹中添加 partial 类文件。

posted on 2013-02-06 10:46  冰桃  阅读(3860)  评论(0编辑  收藏  举报