1、 ORM :Object Relation Mapping ,通俗说:用操作对象的方式来操作数据库。

2、 插入数据不再是执行Insert,而是类似于 Person p=new Person() ; p.Age=3;p.Name="wang" ;db.save(p);这样的做法;

3、ORM工具有很多Dapper、PetPoco、NHibermate,首推Entity Framework

4、EF底层还是多ADO.Net的封装.

5、使用EF进行数据库开发的时候有两个东西建立:建数据库,建模型类。根据这两种创建的先后顺序有EF的三种创建方法:

(1) Database First(数据库优先):先创建数据库表,然后自动生成EDM文件,EDM文件生成模型类

(2)Model First (模型优先):先创建Edm文件,Edm文件自动生成模型类和数据库;

(3)Code First(代码优先):自己写模型类,然后生成数据库,没有EDM。

6、EF安装

(1)基础阶段用控制台项目,使用Nuget安装EntityFramework 会自动再APP'config  中增加两个EntityFramework相关的配置;

(2)在web.cong中配置链接字符串:

  <connectionStrings>
<add name="connstr" connectionString=" Data Source=.; Initial Catalog=Test2; User Id=sa; Password=123; " providerName="System.Data.SqlClient" />
</connectionStrings>

7、 EF简单DataAnnotations实体配置

(1)数据库创建表:T_Persons,有Id(主键,自动增长) ,Name,CreateDateTime;

(2)创建Person类

    [Table("T_Persons")] //因为和表名不一样,所以要使用Table标注;
public class Person
{
public long Id { get; set; }
public string Name { get; set; } public DateTime CreateDateTime { get; set; } }

因为EF约定的主键是Id,所以不用再特殊指定Id为主键,如果非要指定就用[Key] .因为字段名和属性名一样,所以不用再特殊指定关系,如果需要[Column("Name")].

必填字段标注[Required]、字段长度[MaxLength(5)] 、可空字段 int?  、如果字段再数据库中有默认值,则要再属性上标注[DatabaeGenerated]  注意实体类要写成public ,否则后面会有麻烦;

(3)创建 DbContext 类(模型类、实体类)

   public class TestDbContext:DbContext
{
public TestDbContext():base("name=connstr")//name=connstr 表示使用连接字符串中名字为connstr的数据库
{ }
public DbSet<Person> Persons { get; set; }
}

(4)测试:

        static void Main(string[] args)
{
using (TestDbContext ctx = new TestDbContext())
{
Person p1 = new Person()
{
CreateDateTime = DateTime.Now,
Name = "wang"
};
ctx.Persons.Add(p1);
ctx.SaveChanges();
}
}

注意: MyDbConnect 对象是否需要using有争议,不using也没事,每次用的时候new MyDbConnect就行,不用共享同一实例,共享反而会有问题。saveChanges()才会更新到数据库中。EF开发团队都说要using,很多人不用,只是想利用LazyLoad而已,但是那样做是违反分层的原则的。习惯用using

8、 EF模型的两种配置方式:

EF中的模型类有两种配置方式:DataAnnotations、FluentAPI两种。上面这种在模型类上[Table"T_Person")]、[Column("Name")]这种方式就叫 DataAnnotations。这种方式方便,但是耦合度太高,一般的类最好是POCO(就是一个普通的类),不符合大项目开发的要求。微软推荐使用FluentAPI,因此主要用FluentAPI

Entity Framework(二)的更多相关文章

  1. Entity Framework二、 模型优先 ,ObjectContext类

    https://www.cnblogs.com/ejiyuan/archive/2009/05/27/1490786.html 1.ObjectContext 封装.NET Framework和数据库 ...

  2. Entity Framework (二) 查询

    待完善-------------------------------------- ----------- base 关键字用于从派生类中访问基类的成员: 调用基类上已被其他方法重写的方法. 指定创建 ...

  3. Entity Framework 二

    本篇主要介绍:创建了实体数据模型,生成了那些文件以及其代表意义 创建实体数据模型 上一篇的最后,我们创建了数据库,现在我们利用数据库来生成我们的实体数据模型,这种形式我们称为数据库优先,后面会介绍代码 ...

  4. entity framework 新手入门篇(1)-建立模型

    entity framework是微软官方免费提供给大家的一套ORM(Object Relational Mapping对象关系映射)解决方案.它不仅可以帮助我们解决数据缓存的问题,还能在最小的开销下 ...

  5. Entity Framework 程序设计入门二 对数据进行CRUD操作和查询

    前一篇文章介绍了应用LLBL Gen生成Entity Framework所需要的类型定义,用一行代码完成数据资料的读取, <LLBL Gen + Entity Framework 程序设计入门& ...

  6. C# ORM—Entity Framework 之Code first(代码优先)(二)

    一.Entity Framework Code first(代码优先)使用过程 1.1Entity Framework 代码优先简介 不得不提Entity Framework Code First这个 ...

  7. Entity Framework Code First (二)Custom Conventions

    ---------------------------------------------------------------------------------------------------- ...

  8. Entity Framework学习笔记(二)----CRUD(1)

    请注明转载地址:http://www.cnblogs.com/arhat 这篇文章老魏和大家分享一下Entity Framework的CRUD操作,在这之前呢,老魏先说一下老魏对EF的一个整体的认识, ...

  9. Mvc5+Entity Framework6 之二----在MVC中用Entity Framework实现基本的CRUD

    目标:创建控制器和视图的代码,实现CRUD(创建,读取,更新,删除)功能 创建一个详细信息页 控制器为Students的Index页生成的代码排除Enrollments属性在外,因为该属性中关联着一个 ...

  10. Entity Framework笔记(二)

    前几日学习了在VS2010Console项目中使用Entity Framework,并且使用Code First模式.通过编写Model类,来生成数据库对应的表.并且,往表中写入数据以及获取表中的所有 ...

随机推荐

  1. Xamarin.Forms随手记

    1. 更新Android SDK要从VS的工具栏上SDK Manager那里更新,不要像我一样之前搞了好几份SDK放在不同的地方,结果把自己搞糊涂了,更新了半天(真的是花了半天时间)才发现更新的地方不 ...

  2. Spring boot 项目导出可执行jar

    配置文件中添加插件 <plugin> <groupId>org.springframework.boot</groupId> <artifactId>s ...

  3. C#获取包括一二级汉字的拼音 首字母

    C#获取包括一二级汉字的拼音 首字母 声母 汉字拼音转换 using System; using System.Collections.Generic; using System.Linq; usin ...

  4. call()和apply()

    每个函数都包含apply和call方法. 相同点:都接收两个参数,一个是在其中运行函数的作用域,另一个是参数: 不同点:call方法和apply的不同之处在于接收参数的方式不同: apply方法第二个 ...

  5. Shell学习——终端打印

    1.echo1.1.默认情况下,echo在每次调用后会添加一个换行符1.2.待打印的内容,可以用单引号.双引号或者直接打印,不同的方式,有各自的限制1.2.1.使用不带引号的echo时,没法打印分好( ...

  6. spring-mvc.xml的定时器配置

    <!-- 设置时间 --> <bean id="myJobTrigger" class="org.springframework.scheduling. ...

  7. jQuery-laye插件实现 弹框编辑,异步验证,form验证提交

    代码中用到了 jQuery的ajax异步处理,each()循环,submit()页面验证提交form表单,prepend()追加标签,laye插件的弹框效果(如有其它弹框效果可参考官网:http:// ...

  8. 学习python第十三天,函数5 装饰器decorator

    定义:装饰器本质是函数,(装饰其他函数)就是为其他函数添加附加功能原则:1.不能修改被装饰的函数的源代码 2.不能修改装饰的函数的调用方式 实现装饰器知识储备1函数即变量2.高阶函数,满足2个条件之一 ...

  9. 裸机——ADC

    1.首先是ADC的基本知识 模拟信号,连续的 数字信号,离散的 模拟信号,现实世界的很多东西都是连续的,所以使用模拟信号才能准确描述,但是模拟信号不方便控制. 数字信号,计算机中的信号大都为数字的,数 ...

  10. 20145202马超《java程序设计》第一周学习总结

    这两天的学习让我对java有了初步的了解. 1.java是SUN公司推出的面相网络的编程语言. 特点:完全面向对象,与平台无关,跨平台性(例如c++只能在windows上执行,然而java并没有这些限 ...