【EF】EntityFramework DBFirst的使用

来源:http://www.cnblogs.com/lovecsharp094/archive/2017/10/02/7620466.html
-Advertisement-
Play Games

一、前言 久聞EF大名,之前做C/S產品用的是Dapper對SqlLite進行ORM。然後接觸公司授權系統後發現用的是EntityFramework對SQLSever進行ORM。授權系統里用的是DBFirst,增刪查改使用Linq To Entity,覺得非常方便。本篇篇幅較短,老司機可直接略過 二 ...


一、前言

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

 

您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 最近在一個asp.net core web項目中使用TDD的方式開發,結果單元測試超過128個之後,在CI中報錯了:“The configured user limit (128) on the number of inotify instances has been reached.” 在本地卻是 ...
  • 一、JPA註解的介紹 Hibernate Annotation :是使用註解代替XML映射對象關係的新方式JPA: Java Persistence API 是EJB3.0規範中的一部分,專門描述如何處理持久化的規範 常用方式: • 使用JPA的標準註解來做對象關係映射 • 使用Hibernate來 ...
  • 一、首先準備三個軟體: 1.VisualSVN-Server-3.6.3-x64.msi(svn服務端) 2.TortoiseSVN-1.9.6.27867-x64-svn-1.9.6.msi(svn客戶端) 3.LanguagePack_1.9.6.27867-x64-zh_CN.msi(Tort ...
  • 安裝完成apache apollo後,org.eclipse.paho是很方便的測試軟體,下來介紹paho的安裝和使用 2. 搭建paho: a 下載 org.eclipse.paho.ui.app-1.0.0-win32.win32.x86_64,解壓並打開paho.exe,進入paho頁面。 b ...
  • 之前做了c#推送消息到手機端,限於網路要求,不能使用百度等現成的推送,查了許多資料,七拼八湊終於湊齊,記錄下來,即是複習也是希望對來者有所幫助。 我開發的環境是windows,使用java開發的Apache Apollo作為代理伺服器,所以如果你想開發首先是必須有java環境,請自行下載java的j ...
  • 面試題之C# 記憶體管理與垃圾回收 你說說C# 的記憶體管理是怎麼樣的 這句話我記了一個多禮拜了, 自從上次東北師大面試之後, 具體請看<隨便扯扯東北師大的面試>. 國慶閑著沒事, 就大概瞭解了一下, 其實大二學習C# 的時候接觸過, 只不過那會看的也看的懵懂, 我看的是vir in C#, 順便查了些 ...
  • WPF佈局控制項與子控制項的HorizontalAlignment/VerticalAlignment屬性之間的關係: 1、Canvas/WrapPanel控制項: 其子控制項的HorizontalAlignment/VerticalAlignment屬性無效。2、Grid控制項: 其子控制項的Horizont ...
  • 在C#中,值類型和引用類型是相當重要的兩個概念,必須在設計類型的時候就決定類型實例的行為。如果在編寫代碼時不能理解引用類型和值類型的區別,那麼將會給代碼帶來不必要的異常。很多人就是因為沒有弄清楚這兩個概念從而在編程過程中遇到了很多問題,在這裡博主淺談對值類型和引用類型的認識。 首先從概念上看,值類型 ...
一周排行
    -Advertisement-
    Play Games
  • 前言 本文介紹一款使用 C# 與 WPF 開發的音頻播放器,其界面簡潔大方,操作體驗流暢。該播放器支持多種音頻格式(如 MP4、WMA、OGG、FLAC 等),並具備標記、實時歌詞顯示等功能。 另外,還支持換膚及多語言(中英文)切換。核心音頻處理採用 FFmpeg 組件,獲得了廣泛認可,目前 Git ...
  • OAuth2.0授權驗證-gitee授權碼模式 本文主要介紹如何筆者自己是如何使用gitee提供的OAuth2.0協議完成授權驗證並登錄到自己的系統,完整模式如圖 1、創建應用 打開gitee個人中心->第三方應用->創建應用 創建應用後在我的應用界面,查看已創建應用的Client ID和Clien ...
  • 解決了這個問題:《winForm下,fastReport.net 從.net framework 升級到.net5遇到的錯誤“Operation is not supported on this platform.”》 本文內容轉載自:https://www.fcnsoft.com/Home/Sho ...
  • 國內文章 WPF 從裸 Win 32 的 WM_Pointer 消息獲取觸摸點繪製筆跡 https://www.cnblogs.com/lindexi/p/18390983 本文將告訴大家如何在 WPF 裡面,接收裸 Win 32 的 WM_Pointer 消息,從消息裡面獲取觸摸點信息,使用觸摸點 ...
  • 前言 給大家推薦一個專為新零售快消行業打造了一套高效的進銷存管理系統。 系統不僅具備強大的庫存管理功能,還集成了高性能的輕量級 POS 解決方案,確保頁面載入速度極快,提供良好的用戶體驗。 項目介紹 Dorisoy.POS 是一款基於 .NET 7 和 Angular 4 開發的新零售快消進銷存管理 ...
  • ABP CLI常用的代碼分享 一、確保環境配置正確 安裝.NET CLI: ABP CLI是基於.NET Core或.NET 5/6/7等更高版本構建的,因此首先需要在你的開發環境中安裝.NET CLI。這可以通過訪問Microsoft官網下載並安裝相應版本的.NET SDK來實現。 安裝ABP ...
  • 問題 問題是這樣的:第三方的webapi,需要先調用登陸介面獲取Cookie,訪問其它介面時攜帶Cookie信息。 但使用HttpClient類調用登陸介面,返回的Headers中沒有找到Cookie信息。 分析 首先,使用Postman測試該登陸介面,正常返回Cookie信息,說明是HttpCli ...
  • 國內文章 關於.NET在中國為什麼工資低的分析 https://www.cnblogs.com/thinkingmore/p/18406244 .NET在中國開發者的薪資偏低,主要因市場需求、技術棧選擇和企業文化等因素所致。歷史上,.NET曾因微軟的閉源策略發展受限,儘管後來推出了跨平臺的.NET ...
  • 在WPF開發應用中,動畫不僅可以引起用戶的註意與興趣,而且還使軟體更加便於使用。前面幾篇文章講解了畫筆(Brush),形狀(Shape),幾何圖形(Geometry),變換(Transform)等相關內容,今天繼續講解動畫相關內容和知識點,僅供學習分享使用,如有不足之處,還請指正。 ...
  • 什麼是委托? 委托可以說是把一個方法代入另一個方法執行,相當於指向函數的指針;事件就相當於保存委托的數組; 1.實例化委托的方式: 方式1:通過new創建實例: public delegate void ShowDelegate(); 或者 public delegate string ShowDe ...