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,还有迁移、映射、缓存等。

posted @ 2022-05-10 19:54  智图CAD  阅读(194)  评论(2编辑  收藏  举报