O/RM EF6

EF的优点缺点(EF其实是一种OOP思想的一种体现, 把数据库变成了变成了对象) 

  优点,1,减少开发成本,不用去写SQL,开发更快

     2,ORM一般还能适应不同数据库的迁移

     3,包含对象的CSUD操作的API

       缺点: 1,因为是通过sql--反射生成sql--自动执行--反射绑定结果所以必定会照常内存资源的占用导致性能降低(其实也降不了多少)

     2,SQL固定生成,但是僵化,对索引利用不够好,分页算法就不够好,在复杂的情况下难以应对

EF 申明的3种类型

    /// DBFirst:数据库优先,传统的开发模式,有个很重的edmx
    /// CodeFirst:代码先行,不关心数据库,从业务出发,然后能自动生成数据库   (可以通过Model(实体)生成SQL表)
    /// CodeFirstFromDB:

EF 查看SQL 的方式

    /// 1 sqlprofiler (在数据库中去查看)
    /// 2 context.Database.Log += s => Console.WriteLine($"当前执行sql:{s}");

EF简单的 增删改查

 1  try
 2             {
 3                 using (advanced11Entities context = new advanced11Entities())
 4                 {
 5                     context.Database.Log += s => Console.WriteLine($"当前执行sql:{s}");
 6 
 7                     User user = context.Users.Find(17);//主键查询
 8                     User user28 = context.Users.FirstOrDefault(u => u.Id == 28);
 9                     var list = context.Users.Where(u => u.Id > 100);
10 
11                     User userNew = new User()
12                     {
13                         Account = "Admin",
14                         State = 0,
15                         CompanyId = 4,
16                         CompanyName = "万达集团",
17                         CreateTime = DateTime.Now,
18                         CreatorId = 1,
19                         Email = "[email protected]",
20                         LastLoginTime = null,
21                         LastModifierId = 0,
22                         LastModifyTime = DateTime.Now,
23                         Mobile = "18664876671",
24                         Name = "yoyo",
25                         Password = "12356789",
26                         UserType = 1
27                     };
28                     context.Users.Add(userNew);
29                     context.SaveChanges();//表示保存
30 
31                     userNew.Name = "CodeMan";
32                     context.SaveChanges();//表示保存
33 
34                     context.Users.Remove(userNew);
35                     context.SaveChanges();//表示保存
36                 }
37             }
38             catch (Exception ex)
39             {
40                 Console.WriteLine(ex.Message);
41             }
42             Console.Read();

EF中遇到了实体与库中名字不统一时 可以使用特性(Attribute)来解决

      表名称不统一解决办法 表类名称上面添加Table特性书写方法是    例:   [Table("JD_Commodity_001")]

      属性名称不统一解决办 属性名称上面添加Column特性书写方法是    例: [Column("Title")]

 1     //JD_Commodity_001
 2     [Table("JD_Commodity_001")]
 3     public partial class JDCommodity001
 4     {
 5         public int Id { get; set; }
 6 
 7         [StringLength(500)]
 8         [Column("Title")]
 9         public string Text { get; set; }
10  
11     }

猜你喜欢

转载自www.cnblogs.com/YZM97/p/12599961.html
EF6
今日推荐