#ORM工具对接示例(EntityFramework6)
Entity Framework 6(EF6)是microsoft的.NET对象关系映射器(O/RM),详情请参考Entity Framework 6概述 (opens new window)。
# 版本支持
.Net Framework | Entity Framework |
---|---|
net45 net451 net452 net6.0 | 6.4.0 |
# 运行环境
支持在Linux和Windows系统下运行。
# 运行依赖
ADO.NET驱动(Yashandb.Data.YashandbClient.dll),安装步骤请查阅安装YashanDB ADO.NET驱动。
# 安装Entity Framework 6(EF6)框架
参考YashanDB软件包清单获取YashanDB ADO.NET驱动安装包yashandb-dotnet-版本号.zip。
将压缩包下载并解压到本地路径,找到/path/Yashandb.Data.EntityFramework。
编辑应用程序项目,将Yashandb.Data.EntityFramework项目引用到该项目。
对于在Visual Studio开发的应用程序
打开应用程序项目Examples,单击【文件 > 添加 > 现有项目】,单击Yashandb.Data.EntityFramework所在路径,选择Yashandb.Data.EntityFramework.csproj文件,将Yashandb.Data.EntityFramework加入到应用所在解决方案内。
右键单击Examples应用程序项目,依次选择【添加 > 项目引用 > 项目】,勾选Yashandb.Data.EntityFramework选项。
对于在命令行开发的.NET应用程序(以Linux环境为例)
进入Examples应用程序项目所在文件夹,通过dotnet命令将Yashandb.Data.EntityFramework项目添加到该应用程序项目内。
dotnet add reference /path/Yashandb.Data.EntityFramework/Yashandb.Data.EntityFramework.csproj
完成项目引用后,该应用程序即可进行对YashanDB数据库的访问操作。
# 使用方法
注册YashanDB的Provider。
方法一:在App.config中添加配置。
<?xml version="1.0" encoding="utf-8"?> <configuration> <entityFramework> <defaultConnectionFactory type="Yashandb.Data.EntityFramework.YasdbConnectionFactory, Yashandb.Data.EntityFramework"/> <providers> <provider invariantName="Yashandb.Data.EntityFramework" type="Yashandb.Data.EntityFramework.YasdbProviderServices, Yashandb.Data.EntityFramework"/> </providers> </entityFramework> </configuration>
方法二:在定义DbContext时使用属性注入DbConfigurationType(typeof(YasdbEFConfiguration))。
[DbConfigurationType(typeof(YasdbEFConfiguration))] public class DefaultContext : DbContext { public DefaultContext (string connStr) : base(connStr) { Database.SetInitializer<DefaultContext>(null); } public DbSet<Comp> Comps { get; set; } }
使用Entity Framework 6。
public class Program { static void Main(string[] args) { using ( DefaultContext ctx = new DefaultContext("name=YasdbContext") ) { ctx.Database.Delete(); ctx.Database.CreateIfNotExists(); Comp c = new Comp { Name = "aa", DateBegan = DateTime.Now, NumEmployees = 10 }; ctx.Comps.Add(c); ctx.SaveChanges(); foreach ( Comp val in ctx.Comps ) { Console.WriteLine(val.Name); } } } public class Comp { [Key] [DatabaseGenerated(DatabaseGeneratedOption.Identity)] public int Id { get; set; } public string Name { get; set; } public DateTime DateBegan { get; set; } public int NumEmployees { get; set; } } [DbConfigurationType(typeof(YasdbEFConfiguration))] public class DefaultContext : DbContext { public DefaultContext (string connStr) : base(connStr) { Database.SetInitializer<DefaultContext>(null); } public DbSet<Comp> Comps { get; set; } } }
# 规格限制
实体模型不支持的成员类型:
类型 | 说明 |
---|---|
TimeSpan | 时间间隔类型 |
DateTimeOffset | 带时区的时间类型 |
Geometry | 地理信息类型 |
Geography | 地理信息类型 |