AutoCAD中使用EntityFramework连接SqlServerCe数据库
1、需要用到的依赖库如下:
EntityFramework.6.4.4
EntityFramework.SqlServerCompact.6.4.4
Microsoft.SqlServer.Compact.4.0.8876.1
2、app.config需要的配置:
<configSections> <!-- For more information on Entity Framework configuration, visit http://go.microsoft.com/fwlink/?LinkID=237468 --> < section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" /> </configSections> <!-- Add the attribute 'codeConfigurationType' to the 'entityFramework' root element to overwrite the global DbConfiguration --> <entityFramework> <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> <system.data> <DbProviderFactories> <remove invariant="System.Data.SqlServerCe.4.0" /> <add name="Microsoft SQL Server Compact Data Provider 4.0" invariant="System.Data.SqlServerCe.4.0" description=".NET Framework Data Provider for Microsoft SQL Server Compact" type="System.Data.SqlServerCe.SqlCeProviderFactory, System.Data.SqlServerCe, Version=4.0.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91" /> </DbProviderFactories> </system.data>
3、继承DbContext类,其中sqlce是在app.config里配置的连接字符串,这样就完成了最基本的框架。
public class SqlCeDbContext : DbContext { public SqlCeDbContext() : base("sqlce") { } protected override void OnModelCreating(DbModelBuilder modelBuilder) { modelBuilder.Conventions.Remove<PluralizingTableNameConvention>(); Database.SetInitializer(null); // 不初始化 base.OnModelCreating(modelBuilder); } }
接下来就通过Linq实现数据访问
// 创建实体类 public class Customer { /// <summary> /// Gets or sets the username /// </summary> public string Username { get; set; } } // SqlCeDbContext中增加实体类的数据集 public DbSet<Customer> Customers { get; set; } // 调用,返回所有数据 SQLiteDbContext context = new SQLiteDbContext(); List<Customer> customers = context.Customers.ToList(); // 返回单个数据 Customer customer = context.Customers.Where(x => x.Username == "ztcad").FirstOrDefault();
实际系统使用当中会更加复杂,比如封装基本实体类BaseEntity -> EfRepository,支持多数据源IDataProvider -> IEfDataProvider、EfDataProviderFactory,还有迁移、映射、缓存等。