在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
一、Entity Framework Code first(代码优先)使用过程 1.1Entity Framework 代码优先简介 不得不提Entity Framework Code First这个介于牛A与牛C之间的功能,从4.1 开始的Code first使程序员,使软件开发流程进入一个更加方便快捷的时代。 Code First是EntityFramework实现ORM的一种有利手段,因为传统编程方式都是先建立数据库,然后根据数据库模型为应用程序建模,再进行开发;CodeFirst代码优先,先在程序中建立要映射到数据库的实体结构,然后EntityFramework可以根据实体结构生成所对应的数据库。 1.2 最新版本简介(Entity Framework 5,现在VS2012中已出现EF6.0.0beta1版本了) 1.3 Visual Studio 2012中的EF设计器,它也有一些新的功能: 1.3.1 现在模型可以被分为多个关系图,在使用大型的模型时,这是很不错的。您还可以应用着色到实体中来帮助您识别您的模型的分区。 1.4 参考文章、博文 二、 Code First New Database使用 2.1 创建控制台项目 2.2 添加引用最新的Entity Framework 项目上右键单击—》管理NeGut程序包—》联机,找到EntityFramework—》安装 2.3 建立实体类
View Code
2.4 建立数据上下文类 添加引用:using System.Data.Entity;并继承DbContext 代码示例:
View Code
2.5 编写测试代码
View Code
以上便是最基本的应用 2.6 查看数据库 打开SQL Server对象资源管理器,一般数据库会建立在本机的打开数据库默认实例对象上 2.7 使用扩展 使用“程序包管理器控制台”查看、操作生成数据库模型:打开方式:工具—》库程序包管理器—》程序包管理器控制台(注意要选择成您要操作的项目) 主要是数据库迁移(增加实体类(数据表)、增加实体类字段(数据库字段)) 具体使用(打开“程序包管理器控制台”): 1. 输入命令:Enable-Migrations 启用Code first Migration;运行成功后会产生Migrations文件夹及两个类:Configuration.cs 和<timestamp>_InitialCreate.cs,这是一个用时间戳作为前缀的类。如201307080301469_InitialCreate.cs 1.1 添加字段:如在Blog内增加Url
View Code
输入命令:Add-Migration AddUrl,同时在Migrations下会有201307080524348_AddUrl.cs文件 1.2 添加新的实体类文件User 1 public class User 2 { 3 public string UserName { get; set; } 4 public string DisplayName { get; set; } 5 } 输入命令:Add-Migration AddUser;(注可能提示没有主键,此时要为表User建立主键,先添加引用:using System.ComponentModel.DataAnnotations;) 1 public class User 2 { 3 [Key] 4 public string UserName { get; set; } 5 public string DisplayName { get; set; } 6 } 再次执行:Add-Migration AddUser;在执行Update-Database,查看数据库管理工具数据库已建立 1.3 修改字段 修改User实体类中的DisplayName为“display_name”在数据上下文类BlogContext中添加以下代码: 1 protected override void OnModelCreating(DbModelBuilder modelBuilder) 2 { 3 modelBuilder.Entity<User>() 4 .Property(u => u.DisplayName) 5 .HasColumnName("display_name"); 6 } 输入命令:Add-Migration ChangeDisplayName ,在执行Update-Database,即可 1.4 删除某一个字段:删除Blog实体类中的Url 首先在实体类中删除此字段 1 public class Blog 2 { 3 public int BlogId { get; set; } 4 public string Name { get; set; } 5 6 public virtual List<Post> Posts { get; set; } 7 } 以上代码已删除。 三、Code First An Existing Database使用(数据迁移功能暂时不能使用) 3.1 下载安装扩展插件 工具—》扩展和更新—》联机,查找“Entity Framework Power Tools”,进行下载,安装,重新启动。查看是否安装成功,工具—》扩展和更新—》已安装,是否有此工具 3.2 新建数据表Blogs
View Code
以及新建数据表Posts
View Code
3.3 创建一个控制台项目(名称如:CodeFirstExistingDatabaseSample) 3.4 在项目CodeFirstExistingDatabaseSample上右键单击—》菜单中会有“Entity Framework”选项—》选择Reverse Engineer Code First,输入相应的数据库地址,用户名、密码、要操作的数据库等信息,确定即可。(前提是要安装好Power Tools 插件) 3.5 数据迁移,此功估计EF还暂未实现,从使用工具Entity Framework Power Tools Betas3 以及使用的Entity Framework 6.0.0-beta1来看,估计这是EF 6.0的功能 四、数据库生成位置可控制(其实主要就是DbContext的构造函数) 1.使用DbContext的构造函数:public DbContext(string nameOrConnectionString) a、在app.config中添加: 1 <connectionStrings> 2 <add name="CodeFirstBlogContext" providerName="System.Data.SqlClient" connectionString="Server=.;Database=CodeFirstBlog;uid=sa;pwd=sa" /> 3 </connectionStrings> 注:当然这里也可以添加使用其他数据库,但是要提起安装好驱动:引用可参考此文:http://www.cnblogs.com/yylp521/p/3173176.html b、在数据上下文类中添加构造函数(原来没有显示出现,调用默认的一般是本机.\sqlexpress数据库实例) 1 public BlogContext(string config) 2 : base(config) 3 { 4 } 这里可以显示的引用配置文件中的配置库,注:此处config可以直接写name=CodeFirstBlogContext,是配置文件中的connectionStrings下的name。 2. 使用DbContext的构造函数:public DbContext(DbConnection existingConnection, bool contextOwnsConnection) a、在数据上下文类中添加构造函数(原来没有显示出现,调用默认的一般是本机.\sqlexpress数据库实例) 1 public BlogContext(DbConnection connection,bool contextOwnsConnection) 2 : base(connection, contextOwnsConnection) 3 { } b、使用时建立一个Connection即可
View Code
3. 使用数据的连接工厂 1 Database.DefaultConnectionFactory = new SqlConnectionFactory(@"Server=.\sqlexpress;Database=CodeFirstBlog4;uid=sa;pwd=sa"); 2 using (var db=new BlogContext()) 3 { 4 db.Database.Initialize(true); 5 db.Blogs.Add( new Blog { Name = "test" }); 6 db.SaveChanges(); 7 } 注:这里指定数据库名称无效,应该与Database的Initialize方法有关,待查证。 4.这里还有其他的DbContext构造函数可用,可直接查看DbContext类的实现。 Entity Framework
一、Entity Framework Code first(代码优先)使用过程 1.1Entity Framework 代码优先简介 不得不提Entity Framework Code First这个介于牛A与牛C之间的功能,从4.1 开始的Code first使程序员,使软件开发流程进入一个更加方便快捷的时代。 Code First是EntityFramework实现ORM的一种有利手段,因为传统编程方式都是先建立数据库,然后根据数据库模型为应用程序建模,再进行开发;CodeFirst代码优先,先在程序中建立要映射到数据库的实体结构,然后EntityFramework可以根据实体结构生成所对应的数据库。 1.2 最新版本简介(Entity Framework 5,现在VS2012中已出现EF6.0.0beta1版本了) 1.3 Visual Studio 2012中的EF设计器,它也有一些新的功能: 1.3.1 现在模型可以被分为多个关系图,在使用大型的模型时,这是很不错的。您还可以应用着色到实体中来帮助您识别您的模型的分区。 1.4 参考文章、博文 二、 Code First New Database使用 2.1 创建控制台项目 2.2 添加引用最新的Entity Framework 项目上右键单击—》管理NeGut程序包—》联机,找到EntityFramework—》安装 2.3 建立实体类
View Code
2.4 建立数据上下文类 添加引用:using System.Data.Entity;并继承DbContext 代码示例:
View Code
2.5 编写测试代码
View Code
以上便是最基本的应用 2.6 查看数据库 打开SQL Server对象资源管理器,一般数据库会建立在本机的打开数据库默认实例对象上 2.7 使用扩展 使用“程序包管理器控制台”查看、操作生成数据库模型:打开方式:工具—》库程序包管理器—》程序包管理器控制台(注意要选择成您要操作的项目) 主要是数据库迁移(增加实体类(数据表)、增加实体类字段(数据库字段)) 具体使用(打开“程序包管理器控制台”): 1. 输入命令:Enable-Migrations 启用Code first Migration;运行成功后会产生Migrations文件夹及两个类:Configuration.cs 和<timestamp>_InitialCreate.cs,这是一个用时间戳作为前缀的类。如201307080301469_InitialCreate.cs 1.1 添加字段:如在Blog内增加Url
View Code
输入命令:Add-Migration AddUrl,同时在Migrations下会有201307080524348_AddUrl.cs文件 1.2 添加新的实体类文件User 1 public class User 2 { 3 public string UserName { get; set; } 4 public string DisplayName { get; set; } 5 } 输入命令:Add-Migration AddUser;(注可能提示没有主键,此时要为表User建立主键,先添加引用:using System.ComponentModel.DataAnnotations;) 1 public class User 2 { 3 [Key] 4 public string UserName { get; set; } 5 public string DisplayName { get; set; } 6 } 再次执行:Add-Migration AddUser;在执行Update-Database,查看数据库管理工具数据库已建立 1.3 修改字段 修改User实体类中的DisplayName为“display_name”在数据上下文类BlogContext中添加以下代码: 1 protected override void OnModelCreating(DbModelBuilder modelBuilder) 2 { 3 modelBuilder.Entity<User>() 4 .Property(u => u.DisplayName) 5 .HasColumnName("display_name"); 6 } 输入命令:Add-Migration ChangeDisplayName ,在执行Update-Database,即可 1.4 删除某一个字段:删除Blog实体类中的Url 首先在实体类中删除此字段 1 public class Blog 2 { 3 public int BlogId { get; set; } 4 public string Name { get; set; } 5 6 public virtual List<Post> Posts { get; set; } 7 } 以上代码已删除。 三、Code First An Existing Database使用(数据迁移功能暂时不能使用) 3.1 下载安装扩展插件 工具—》扩展和更新—》联机,查找“Entity Framework Power Tools”,进行下载,安装,重新启动。查看是否安装成功,工具—》扩展和更新—》已安装,是否有此工具 3.2 新建数据表Blogs
View Code
以及新建数据表Posts
View Code
3.3 创建一个控制台项目(名称如:CodeFirstExistingDatabaseSample) 3.4 在项目CodeFirstExistingDatabaseSample上右键单击—》菜单中会有“Entity Framework”选项—》选择Reverse Engineer Code First,输入相应的数据库地址,用户名、密码、要操作的数据库等信息,确定即可。(前提是要安装好Power Tools 插件) 3.5 数据迁移,此功估计EF还暂未实现,从使用工具Entity Framework Power Tools Betas3 以及使用的Entity Framework 6.0.0-beta1来看,估计这是EF 6.0的功能 四、数据库生成位置可控制(其实主要就是DbContext的构造函数) 1.使用DbContext的构造函数:public DbContext(string nameOrConnectionString) a、在app.config中添加: 1 <connectionStrings> 2 <add name="CodeFirstBlogContext" providerName="System.Data.SqlClient" connectionString="Server=.;Database=CodeFirstBlog;uid=sa;pwd=sa" /> 3 </connectionStrings> 注:当然这里也可以添加使用其他数据库,但是要提起安装好驱动:引用可参考此文:http://www.cnblogs.com/yylp521/p/3173176.html b、在数据上下文类中添加构造函数(原来没有显示出现,调用默认的一般是本机.\sqlexpress数据库实例) 1 public BlogContext(string config) 2 : base(config) 3 { 4 } 这里可以显示的引用配置文件中的配置库,注:此处config可以直接写name=CodeFirstBlogContext,是配置文件中的connectionStrings下的name。 2. 使用DbContext的构造函数:public DbContext(DbConnection existingConnection, bool contextOwnsConnection) a、在数据上下文类中添加构造函数(原来没有显示出现,调用默认的一般是本机.\sqlexpress数据库实例) 1 public BlogContext(DbConnection connection,bool contextOwnsConnection) 2 : base(connection, contextOwnsConnection) 3 { } b、使用时建立一个Connection即可
View Code
3. 使用数据的连接工厂 1 Database.DefaultConnectionFactory = new SqlConnectionFactory(@"Server=.\sqlexpress;Database=CodeFirstBlog4;uid=sa;pwd=sa"); 2 using (var db=new BlogContext()) 3 { 4 db.Database.Initialize(true); 5 db.Blogs.Add( new Blog { Name = "test" }); 6 db.SaveChanges(); 7 } 注:这里指定数据库名称无效,应该与Database的Initialize方法有关,待查证。 4.这里还有其他的DbContext构造函数可用,可直接查看DbContext类的实现。 |
2023-10-27
2022-08-15
2022-08-17
2022-09-23
2022-08-13
请发表评论