Entity Framework 自动生成CodeFirst代码
前言
在前面的文章中我们提到Entity Framework的“Code First”模式也同样可以基于现有数据库进行开发。今天就让我们一起看一下使用Entity Framework Power Tools如何基于现有数据库生成数据类和数据库上下等。
Entity Framework Power Tools
基于现有数据库生成POCO数据类和数据库上下文需要借助Visual Studio一个扩展插件-- Entity Framework Power Tools(一个Code First反向工程工具)。
通过点击上图的扩展和更新,得到如下图所示的界面
安装完之后只要在项目上右键选择Entity Framework->Reverse Engineer Code First(项目中首先需要安装Entity Framework 包,否则会有错误),然后在弹出的窗口中输入相关的数据库连接信息即可(我们这里使用“NorthWind”数据库)。
当然当你在操作的时候你首先还是要先引用Entity Framework。然后点击Reverse Engineer Code First
配置好数据库链接,
确认之后,我们首先来看一下配置文件的变化
- <?xml version="1.0" encoding="utf-8"?>
- <configuration>
- <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=5.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
- </configSections>
- <connectionStrings>
- <add name="NorthwindContext" connectionString="Data Source=.;Initial Catalog=Northwind;Integrated Security=True;MultipleActiveResultSets=True"
- providerName="System.Data.SqlClient" />
- </connectionStrings>
- <startup>
- <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" />
- </startup>
- <entityFramework>
- <defaultConnectionFactory type="System.Data.Entity.Infrastructure.LocalDbConnectionFactory, EntityFramework">
- <parameters>
- <parameter value="v11.0" />
- </parameters>
- </defaultConnectionFactory>
- </entityFramework>
- </configuration>
于此同时生成了NorthWindContext数据库操作上下文
- using System.Data.Entity;
- using System.Data.Entity.Infrastructure;
- using CodeFirstPowerTools.Models.Mapping;
- namespace CodeFirstPowerTools.Models
- {
- public partial class NorthwindContext : DbContext
- {
- static NorthwindContext()
- {
- Database.SetInitializer<NorthwindContext>(null);
- }
- public NorthwindContext()
- : base("Name=NorthwindContext")
- {
- }
- public DbSet<Category> Categories { get; set; }
- public DbSet<CustomerDemographic> CustomerDemographics { get; set; }
- public DbSet<Customer> Customers { get; set; }
- public DbSet<Employee> Employees { get; set; }
- public DbSet<Order_Detail> Order_Details { get; set; }
- public DbSet<Order> Orders { get; set; }
- public DbSet<Product> Products { get; set; }
- public DbSet<Region> Regions { get; set; }
- public DbSet<Shipper> Shippers { get; set; }
- public DbSet<Supplier> Suppliers { get; set; }
- public DbSet<Territory> Territories { get; set; }
- public DbSet<Alphabetical_list_of_product> Alphabetical_list_of_products { get; set; }
- public DbSet<Category_Sales_for_1997> Category_Sales_for_1997 { get; set; }
- public DbSet<Current_Product_List> Current_Product_Lists { get; set; }
- public DbSet<Customer_and_Suppliers_by_City> Customer_and_Suppliers_by_Cities { get; set; }
- public DbSet<Invoice> Invoices { get; set; }
- public DbSet<Order_Details_Extended> Order_Details_Extendeds { get; set; }
- public DbSet<Order_Subtotal> Order_Subtotals { get; set; }
- public DbSet<Orders_Qry> Orders_Qries { get; set; }
- public DbSet<Product_Sales_for_1997> Product_Sales_for_1997 { get; set; }
- public DbSet<Products_Above_Average_Price> Products_Above_Average_Prices { get; set; }
- public DbSet<Products_by_Category> Products_by_Categories { get; set; }
- public DbSet<Sales_by_Category> Sales_by_Categories { get; set; }
- public DbSet<Sales_Totals_by_Amount> Sales_Totals_by_Amounts { get; set; }
- public DbSet<Summary_of_Sales_by_Quarter> Summary_of_Sales_by_Quarters { get; set; }
- public DbSet<Summary_of_Sales_by_Year> Summary_of_Sales_by_Years { get; set; }
- protected override void OnModelCreating(DbModelBuilder modelBuilder)
- {
- modelBuilder.Configurations.Add(new CategoryMap());
- modelBuilder.Configurations.Add(new CustomerDemographicMap());
- modelBuilder.Configurations.Add(new CustomerMap());
- modelBuilder.Configurations.Add(new EmployeeMap());
- modelBuilder.Configurations.Add(new Order_DetailMap());
- modelBuilder.Configurations.Add(new OrderMap());
- modelBuilder.Configurations.Add(new ProductMap());
- modelBuilder.Configurations.Add(new RegionMap());
- modelBuilder.Configurations.Add(new ShipperMap());
- modelBuilder.Configurations.Add(new SupplierMap());
- modelBuilder.Configurations.Add(new TerritoryMap());
- modelBuilder.Configurations.Add(new Alphabetical_list_of_productMap());
- modelBuilder.Configurations.Add(new Category_Sales_for_1997Map());
- modelBuilder.Configurations.Add(new Current_Product_ListMap());
- modelBuilder.Configurations.Add(new Customer_and_Suppliers_by_CityMap());
- modelBuilder.Configurations.Add(new InvoiceMap());
- modelBuilder.Configurations.Add(new Order_Details_ExtendedMap());
- modelBuilder.Configurations.Add(new Order_SubtotalMap());
- modelBuilder.Configurations.Add(new Orders_QryMap());
- modelBuilder.Configurations.Add(new Product_Sales_for_1997Map());
- modelBuilder.Configurations.Add(new Products_Above_Average_PriceMap());
- modelBuilder.Configurations.Add(new Products_by_CategoryMap());
- modelBuilder.Configurations.Add(new Sales_by_CategoryMap());
- modelBuilder.Configurations.Add(new Sales_Totals_by_AmountMap());
- modelBuilder.Configurations.Add(new Summary_of_Sales_by_QuarterMap());
- modelBuilder.Configurations.Add(new Summary_of_Sales_by_YearMap());
- }
- }
- }
最终来查看一下生成的文件
代码调用实例
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Text;
- using System.Threading.Tasks;
- using CodeFirstPowerTools.Models;
- namespace CodeFirstPowerTools
- {
- class Program
- {
- static void Main(string[] args)
- {
- using (var db = new NorthwindContext())
- {
- IQueryable<Order> orders = from order in db.Orders
- where order.OrderID < 10256
- select order;
- foreach (Order order in orders)
- {
- Console.WriteLine(order.ShipCity);
- }
- }
- Console.ReadLine();
- }
- }
- }
执行后结果如下
简单的使用到此为止。
Entity Framework 自动生成CodeFirst代码的更多相关文章
- MetadataType来帮助entity framework自动生成的代码进行标注
真的是,用的时候就四处google,还是记在这里容易找 [MetadataType(typeof(Person.Metadata))] public partial class Person { pr ...
- Visual Studio Entity Framework (EF) 生成SQL 代码 性能查询
Visual Studio Entity Framework (EF) 生成SQL 代码 性能查询 SQL 中,有SQL Server Profiler可以用来查询性能以及查看外部调用的SQL ...
- Entity Framework 自动生成代码 如何用继承
分部类 用接口
- Oracle中使用Entity Framework 6.x Code-First
Oracle中使用Entity Framework 6.x Code-First方式开发 去年写过一篇EF的简单学习笔记,当时EF还不支持Oracle的Code-First开发模式,今天无意又看了下O ...
- 关于Entity Framework自动关联查询与自动关联更新导航属性对应的实体注意事项说明
一.首先了解下Entity Framework 自动关联查询: Entity Framework 自动关联查询,有三种方法:Lazy Loading(延迟加载),Eager Loading(预先加载) ...
- [Dynamic Language] 用Sphinx自动生成python代码注释文档
用Sphinx自动生成python代码注释文档 pip install -U sphinx 安装好了之后,对Python代码的文档,一般使用sphinx-apidoc来自动生成:查看帮助mac-abe ...
- wsdl自动生成Java代码,根据wsdl生成Java代码
wsdl自动生成Java代码,根据wsdl生成Java代码 >>>>>>>>>>>>>>>>>&g ...
- 使用xorm工具,根据数据库自动生成 go 代码
使用xorm工具,根据数据库自动生成 go 代码 引入 使用 golang 操作数据库的同学都会遇到一个问题 -- 根据数据表结构创建对应的 struct 模型.因为 golang 的使用首字母控制可 ...
- mybatis自动生成java代码
SSM框架没有DB+Record模式,写起来特别费劲,只能用下面的方法勉强凑合. 上图中,*.jar为下载的,src为新建的空白目录,.xml配置如下. <?xml version=" ...
随机推荐
- Mtk Ft6306 touch 驱动 .
1.1. MTK Touch 驱动的组成Mtk Touch driver 驱动包括:Mtk platform 虚拟平台设备驱动.Module touch IC 驱动.Input subsys ...
- angular_form
<!doctype html> <html> <head> <meta charset="utf-8"> <title> ...
- eclipse中安装svn插件
Eclipse安装SVN 1.help->Install New Software2.Work With,点击add name:subclipse url:http://su ...
- 关于js字符串替换的一道笔试题目
题目描述 请写出一个字符串转换函数,接受两个参数: 1.字符串 形如{a}ab-{b}cde{c}fff{d}{}: 2.对象,形如{'a':'1','b':'2','d':'4'} 根据,对象的属性 ...
- Ibatis学习总结4--SQL Map XML 映射文件扩展
SQL Map XML 映射文件除了上文提到的属性还有一些其他重要的属性,下文将详细介绍这些属性. 缓存 Mapped Statement 结果集 通过在查询 statement 中指定 cacheM ...
- DVR分布式路由
1. 背景 没有使用DVR的场景: 从图中可以明显看到东西向和南北向的流量会集中到网络节点,这会使网络节点成为瓶颈. 如果启用DVR,如下图: 对于东西向的流量, 流量会直接在计算节点之间传递. 对于 ...
- 【UVALive 7334】Kernel Knights
题 题意 有两个队的骑士1到n和n+1到2n,每个骑士只能互相攻击对手队的一个骑士.kernel的意思是在这个kernel里的骑士不会互相攻击,在kernel外的骑士被kernel里的骑士攻击. 现在 ...
- 移动H5页面,keyup事件不好使用处理解决
1.mouse事件换成touch,pointer事件,keyup换成textInput事件
- 记录一次MVC 3.0错误 HTTP 404您正在查找的资源(或者它的一个依赖项)可能已被移除,或其名称已更改,或暂时不可用。请检查以下 URL 并确保其拼写正确。
在部署到IIS7时,MVC3报了一个找不到资源的错误,文件肯定是有的,而且页面是肯定报错的,也就说内部运行错误了,而MVC把错误没有抛出来而已: 所以对症下药,发觉我的项目里面用了rexs进行多语言, ...
- Vijos1056 图形面积
描述 桌面上放了N个平行于坐标轴的矩形,这N个矩形可能有互相覆盖的部分,求它们组成的图形的面积. 格式 输入格式 输入第一行为一个数N(1≤N≤100),表示矩形的数量.下面N行,每行四个整数,分别表 ...