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()保存修改即可。

    四、结尾

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

  • 相关阅读:
    LeetCode Path Sum II
    LeetCode Longest Palindromic Substring
    LeetCode Populating Next Right Pointers in Each Node II
    LeetCode Best Time to Buy and Sell Stock III
    LeetCode Binary Tree Maximum Path Sum
    LeetCode Find Peak Element
    LeetCode Maximum Product Subarray
    LeetCode Intersection of Two Linked Lists
    一天一个设计模式(1)——工厂模式
    PHP迭代器 Iterator
  • 原文地址:https://www.cnblogs.com/lovecsharp094/p/7620466.html
Copyright © 2011-2022 走看看