zoukankan      html  css  js  c++  java
  • 【EF】EntityFramework DBFirst的使用

    一、前言

           久闻EF大名,之前做C/S产品用的是Dapper对SqlLite进行ORM。然后接触公司授权系统后发现用的是EntityFramework对SQLSever进行ORM。授权系统里用的是DBFirst,增删查改使用Linq To Entity,觉得非常方便。本篇篇幅较短,老司机可直接略过

    二、添加EF       

            Step1:添加“新建项”,起个名称,添加ADO.NET实体数据模型;

             Step2:选择模型类型,来自数据库的EF设计器;

             Step3:选择数据连接,新建连接,选择要使用的数据库类型;默认SQLSever

             Step4:测试连接数据库;

             Step5:选择EF版本;

             Step6:选择要实体化的表,点击完成。

    三、操作

           经过上述操作会产生三个文件:

            1. EntityModel.Context.tt (上下文,所有class的DBSet集合都在这个文件下的.cs文件中)

            2. EntityModel.tt       (每个表映射后的class都放在这个文件下面)

            3. EntityModel.edmx (可视化的表设计器)

            假设连接的数据库下有三个表:AgencyInfo,ContractInfo,CustomerInfo。那么EntityModel.tt下就会有三个对应的.cs文件:

    //------------------------------------------------------------------------------
    // <auto-generated>
    //    This code was generated from a template.
    //
    //    Manual changes to this file may cause unexpected behavior in your application.
    //    Manual changes to this file will be overwritten if the code is regenerated.
    // </auto-generated>
    //------------------------------------------------------------------------------
    
    using System;
    using System.Collections.Generic;
    
    namespace HHH
    {
        public partial class AgencyInfo
        {
            public System.Guid ID { get; set; }
            public string UnitName { get; set; }
            public string Phone { get; set; }
            public string Address { get; set; }
            public string comments { get; set; }
            public Nullable<System.DateTime> CreatTime { get; set; }
            public Nullable<int> ShowFlag { get; set; }
        }
        
    }
    //------------------------------------------------------------------------------
    // <auto-generated>
    //    This code was generated from a template.
    //
    //    Manual changes to this file may cause unexpected behavior in your application.
    //    Manual changes to this file will be overwritten if the code is regenerated.
    // </auto-generated>
    //------------------------------------------------------------------------------
    
    using System;
    using System.Collections.Generic;
    
    namespace HHH
    {
        public partial class ContractInfo
        {
            public System.Guid ID { get; set; }
            public string Title { get; set; }
            public string Comment { get; set; }
            public Nullable<System.DateTime> CreateDate { get; set; }
        }
        
    }
    //------------------------------------------------------------------------------
    // <auto-generated>
    //    This code was generated from a template.
    //
    //    Manual changes to this file may cause unexpected behavior in your application.
    //    Manual changes to this file will be overwritten if the code is regenerated.
    // </auto-generated>
    //------------------------------------------------------------------------------
    
    using System;
    using System.Collections.Generic;
    
    namespace HHH
    {
        public partial class CustomerInfo
        {
            public System.Guid ID { get; set; }
            public string Name { get; set; }
            public string ContactInfo { get; set; }
            public string Address { get; set; }
            public string Comments { get; set; }
            public string Email { get; set; }
            public string MobilePhone { get; set; }
            public string province { get; set; }
            public string City { get; set; }
            public string Type { get; set; }
            public Nullable<System.DateTime> CreateDate { get; set; }
        }
        
    }

            

             那么EntityModel.Context.tt是这样的:

    //------------------------------------------------------------------------------
    // <auto-generated>
    //    This code was generated from a template.
    //
    //    Manual changes to this file may cause unexpected behavior in your application.
    //    Manual changes to this file will be overwritten if the code is regenerated.
    // </auto-generated>
    //------------------------------------------------------------------------------
    
    using System;
    using System.Data.Entity;
    using System.Data.Entity.Infrastructure;
    
    namespace HHH
    {
        public partial class MyEntities: DbContext
        {
            public MyEntities()
                : base("name=MyEntities")
            {
            }
        
            protected override void OnModelCreating(DbModelBuilder modelBuilder)
            {
                throw new UnintentionalCodeFirstException();
            }
              
            public DbSet<ContractInfo> ContractInfoes { get; set; }
            public DbSet<CustomerInfo> CustomerInfoes { get; set; }
            public DbSet<AgencyInfo> AgencyInfoes { get; set; }
    
        }
    }

               需要对表对象操作时,首先要:

    private MyEntities dbContext = new MyEntities();

                 需要对哪个表操作,就dbContext.ContractInfoes或者dbContext.CustomerInfoes这样找到数据集合,然后用Linq去操作,最后别忘dbContext.SaveChanges()保存修改即可。

    四、结尾

           明天再看看写点什么,保持学习进度,再过几天要去练车了

  • 相关阅读:
    POJ 1860
    Notepad++ 经常使用快捷键 (MEMO)
    SpringMVC现实
    krpano漫游加方向性3D声音(这篇文章已被移到krpano中国网站 krpano360.com)
    DFS PKU 1562
    Java中间(三十五)-----Java详细设置(一个):请指定初始容量设置
    HDU 5052 Yaoge’s maximum profit 光秃秃的树链拆分 2014 ACM/ICPC Asia Regional Shanghai Online
    智课雅思词汇---二十五、-ate
    新东方雅思词汇---8.3、apt
    新东方雅思词汇---7.4、cap
  • 原文地址:https://www.cnblogs.com/lovecsharp094/p/7620466.html
Copyright © 2011-2022 走看看