CodeFirst 实例一

1.新建一个WebForm项目,名字就叫CodeFirstEF

2:在项目中添加引用EF所需要的5个核心类库:(如果找不到这几个类库,可以新建基于数据库的ADO.NET 实体数据模型,然后从里面拷贝)

1. EntityFramework

2. System.Data.Entity

3. System.ComponentModel.DataAnnotations

4. System.Runtime.Serialization

5. System.Security

3:EF需要依赖Web.config配置文件中的三个节点。我需要将这三个节点拷贝到项目的Web.config文件中的<configuration>节点下。这三个节点就是:

<?xml version="1.0" encoding="utf-8"?><!--有关如何配置 ASP.NET 应用程序的详细信息,请访问http://go.microsoft.com/fwlink/?LinkId=169433--><configuration><!--要将以下个3节点加入到Web.config文件中来;当然 <system.web>这个节点本身就存在的--><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><system.web><compilation debug="true" targetFramework="4.5" /><httpRuntime targetFramework="4.5" /></system.web><connectionStrings><!--如果从别处拷贝过来的话,这需要将connectionString的值修改成我们自己需要的连接字符串。如果是使用的ADO.NET的话还需要将providerName的值修改成providerName="System.Data.SqlClient"--><add name="ConnStr" connectionString="server=.;database=MySales ;uid=sa;pwd=123456;" providerName="System.Data.SqlClient" /></connectionStrings><entityFramework><defaultConnectionFactory type="System.Data.Entity.Infrastructure.LocalDbConnectionFactory, EntityFramework"><parameters><parameter value="v11.0" /></parameters></defaultConnectionFactory></entityFramework>
</configuration>

4.我们想使用EF去访问数据库,就必须要定义一个EF上下文容器类

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Data.Entity; //要想使用DbContext类就必须要引入一个类库
using CodeFirstEF.Model;namespace CodeFirstEF.EFlib
{//BaseDbContext类继承了BaseDbContext类后,它就是一个上下文容器类了public class BaseDbContext:DbContext{//这个类将来要被实例化的,实例化应该初始化ADO.NET的连接字符串,所以这里调用父类一个带参数的构造函数,指明去Web.config文件去<connectionStrings>节点下找到Name为ConnStr的节点值去初始化这个ADO..NET连接字符串public BaseDbContext() : base("name=ConnStr"){//告诉EF容器,如果没有ConnStr连接字符串中配置的数据库,则自动创建这个数据库。(我们ConnStr连接字符串中配置的数据库名字叫MySales,如果我们SQL Server中不存在这个MySales数据库则自动创建这个数据库)base.Database.CreateIfNotExists();}//public DbSet<UserInfo> UserInfo{get;set;} //可建立这个属性,也可以不建立,如果不建立的时候,直接使用db.Set<UserInfo>().Add(model);来增加数据}
}

现在就可以使用这个EF容器类了

新建一个Web窗体

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;namespace CodeFirstEF
{using CodeFirstEF.EFlib;using CodeFirstEF.Model;public partial class WebForm1 : System.Web.UI.Page{protected void Page_Load(object sender, EventArgs e){BaseDbContext db = new BaseDbContext();UserInfo model = new UserInfo() {UserName = "毛泽东", Age = 103 };//db.UserInfo.Add(model);//或者采用下面的方式db.Set<UserInfo>().Add(model);db.SaveChanges();}}
}

然后运行,我们会发现SQL Server中已经生成了MySales这个数据库了。同时下面还生成了一个名字为UserInfo的表。同时表中还插入了一条数据。

----------------------------------------------

CodeFirst 实例二  | 使用三层

下面是最新的做做的一个Demo 使用三层

UI层

WebForm1.aspx

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;namespace WebApp
{using BLL;using Models;public partial class WebForm1 : System.Web.UI.Page{protected void Page_Load(object sender, EventArgs e){T_UserInfoBll bll = new T_UserInfoBll();T_UserInfo user = new T_UserInfo() { Name = "张三丰", Age = 105 };bll.AddData(user);var b = bll.QueryWhere(r => r.Age > 10);this.GridView1.DataSource = b;GridView1.DataBind();}}
}

BLL层

T_UserInfoBll.cs

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;namespace BLL
{using DAL;using Models;public class T_UserInfoBll{public List<T_UserInfo> QueryWhere(System.Linq.Expressions.Expression<Func<T_UserInfo, bool>> where){T_UserInfoDal dal = new T_UserInfoDal();return dal.QueryWhere(where);}public bool AddData(T_UserInfo model){T_UserInfoDal dal = new T_UserInfoDal();return  dal.AddData(model);}}
}

DAL层

T_UserInfoDal.cs

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;namespace DAL
{using Models;public class T_UserInfoDal{public List<T_UserInfo> QueryWhere(System.Linq.Expressions.Expression<Func<T_UserInfo, bool>> where){BaseDbContext db = new BaseDbContext();return db.T_UserInfo.Where(where).ToList();}public bool AddData(T_UserInfo model){BaseDbContext db = new BaseDbContext();db.T_UserInfo.Add(model);int isOK = db.SaveChanges(); //返回数据是:已写入基础数据库的对象的数目。return isOK>0;}}
}

Models

using System;
using System.Collections.Generic;using System.Linq;
using System.Text;
using System.Threading.Tasks;namespace Models
{using System.ComponentModel.DataAnnotations;public class T_UserInfo{[Key] //因为这里我们并没有直接添加EF,所以意味着这里没有映射实体类的元数据了。所以这里我们要手动的标注主键public int id { get; set; }public string Name { get; set; }public int Age { get; set; }}
}

EF| CodeFirst 代码先行相关推荐

  1. EF CodeFirst 必须要解决的问题

    Entity Framework有三种模式:Model First.DB First和 CodeFirst,这里只谈CodeFirst.实际项目中如果采用了CodeFirst,那么必定会碰见下面这些问 ...

  2. 新年奉献MVC+EF(CodeFirst)+Easyui医药MIS系统

    本人闲来无事就把以前用Asp.net做过的一个医药管理信息系统用mvc,ef ,easyui重新做了一下,业务逻辑简化了许多,旨在加深对mvc,ef(codefirst),easyui,AutoMap ...

  3. Entity Framework 数据库先行、模型先行、代码先行

    数据库先行(Database First):基于已存在的数据库,利用某些工具(如Vs提供的EF设计器)创建实体类,数据库对象与实体类的匹配关系等,你也可以手动修改这些自动生成的代码及匹配文件. 模型先 ...

  4. EF CodeFirst 如何通过配置自动创建数据库当模型改变时

    最近悟出来一个道理,在这儿分享给大家:学历代表你的过去,能力代表你的现在,学习代表你的将来. 十年河东十年河西,莫欺少年穷 学无止境,精益求精    本篇为进阶篇,也是弥补自己之前没搞明白的地方,惭愧 ...

  5. MVC3教程之实体模型和EF CodeFirst

    在本节中,我们将使用Entity Framework 数据访问技术来定义这些模型类,并对这些类来进行操作.EF支持一个被称之为"code-first"的开发范例.Code-firs ...

  6. nopCommerce EF codefirst翻译版

    在NopCommerce中使用实体框架(EF)代码优先迁移进行快速自定义 由Woon Cherk Lam | 2013年12月19日,星期四 我见过很多nopCommerce论坛用户询问他们如何使用E ...

  7. [转]Using Entity Framework (EF) Code-First Migrations in nopCommerce for Fast Customizations

    本文转自:https://www.pronopcommerce.com/using-entity-framework-ef-code-first-migrations-in-nopcommerce-f ...

  8. 了解EF CodeFirst的Migrator功能与Migrator.Net对比

    在上一篇[数据库迁移利器:Migrator.Net]中,很多朋友提到了EF的CodeFirst也有数据库的迁移功能,说来真惭愧,玩了那么多年,至今还未去了解EF,今天来了解下CodeFirst然后与M ...

  9. 知其然不知其所以然的悲惨后果【EF CodeFirst 实体关系两日游】

    先上测试代码 public class User {public int ID { get; set; } public int BillingAddressID { get; set; }publi ...

最新文章

  1. AI把爱豆变胖视频火遍B站,我们找到了背后的技术团队:你是怎么把刘亦菲变胖的?...
  2. 技术人的生命之源在于绝不固步自封而不断进取的精神
  3. Linux 目录详细说明
  4. Spring事务配置方式(一) 拦截器方式配置
  5. sql \n 查询_探索SQL查询提示选项(快速N)
  6. 文言的理解 —— 古时的称谓、别称、别名
  7. 教你4种压缩PDF让文档快速变小的方法
  8. 【Java8】Function 讲解
  9. 如何在ppt中生成柱状图_PPT幻灯片中怎么插入柱形图数据图表?
  10. PTA 7-47 打印选课学生名单 (25 point(s))
  11. Google文件系统
  12. 【MISCCFTSHOW总结】
  13. Spring Boot 实现定时任务
  14. 信息奥赛一本通1225:金银岛
  15. 移动互联网关键技术——终端、通信和应用技术
  16. OA系统高性能部署方案
  17. 计算机基础教师期中工作小结,教师个人小结
  18. 图压 - 简单且强大、免费开源的图片压缩软件
  19. Linux 安装 adobe reader
  20. php 导出导入excel

热门文章

  1. 【BJOI2019】勘破神机【数论】
  2. 最近很火的爱心网页(html+css+js),表白必备
  3. 强烈推荐几个超厉害的公众号!
  4. 从Eclipse官网查找自己要的插件地址 来安装
  5. 可视化展示——实现论文引用关系动图展示
  6. 如何在迪士尼+上启用和自定义字幕
  7. Apache Calcite初探和csv简单例子
  8. IT界的复仇者联盟解读
  9. 视频号还是直播?2021年微信财富密码预言
  10. 使用 bibtex 进行参考文献管理