Entity Framework入門教程:創建實體數據模型

来源:http://www.cnblogs.com/yangsofter/archive/2017/06/27/create-dbcontext.html
-Advertisement-
Play Games

下圖為一個已經創建好的資料庫表關係 實體數據模型的創建過程 在Visual Studio項目中,右鍵程式集菜單,選擇【添加】 》【新建項】,在【添加新項視窗】中選擇【ADO.NET實體數據模型】,如下圖 在【實體數據模型嚮導】視窗中選擇【來自資料庫的EF設計器】 然後選擇資料庫連接,如果沒有的話,可 ...


下圖為一個已經創建好的資料庫表關係

實體數據模型的創建過程

在Visual Studio項目中,右鍵程式集菜單,選擇【添加】-》【新建項】,在【添加新項視窗】中選擇【ADO.NET實體數據模型】,如下圖

在【實體數據模型嚮導】視窗中選擇【來自資料庫的EF設計器】

然後選擇資料庫連接,如果沒有的話,可以點擊新建一個連接

然後選擇資料庫對象

現在a School.edmx文件被添加到了項目中,在這個文件中包含了school_schema資料庫中表的實體類

創建實體數據模型時自動生成的配置文件

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <configSections>
    <!-- For more information on Entity Framework configuration, visit http://go.microsoft.com/fwlink/?LinkID=237468 -->
    <section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
  </configSections>
  <entityFramework>
    <defaultConnectionFactory type="System.Data.Entity.Infrastructure.LocalDbConnectionFactory, EntityFramework">
      <parameters>
        <parameter value="mssqllocaldb" />
      </parameters>
    </defaultConnectionFactory>
    <providers>
      <provider invariantName="System.Data.SqlClient" type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer" />
      <provider invariantName="MySql.Data.MySqlClient" type="MySql.Data.MySqlClient.MySqlProviderServices, MySql.Data.Entity.EF6"></provider>
    </providers>
  </entityFramework>
<connectionStrings><add name="SchoolSchemaEntities" connectionString="metadata=res://*/School.csdl|res://*/School.ssdl|res://*/School.msl;provider=MySql.Data.MySqlClient;provider connection string=&quot;server=127.0.0.1;user id=root;password=root;persistsecurityinfo=True;database=school_schema&quot;" providerName="System.Data.EntityClient" /></connectionStrings></configuration>

因為我使用的是MySQL,所以你要進行上面的操作的話需要安裝一下組件,如果是MSSQL的話,請自行忽略,操作過程都是一樣的

如果遇到如下圖中的錯誤,你可以手動添加MySql.Data.Entity.EF6.dll(位於MySQL Connector Net的安裝目錄中)

然後添加配置文件,然後再重新進行以上操作。

<provider invariantName="MySql.Data.MySqlClient" type="MySql.Data.MySqlClient.MySqlProviderServices, MySql.Data.Entity.EF6"></provider>

DbContext

在創建實體數據模型的過程中,VS為我們生成了一個SchoolSchemaEntities類(該名稱是在實體數據模型嚮導視窗資料庫連接設置的時候設定的),它繼承自DbContext(資料庫上下文)。DbContext是 Entity Framework中很重要的一部分,它是實體類和資料庫之前的一道橋梁。

資料庫上下文的功能:

  • EntitySet: 資料庫表的實體映射集合,形如是DbSet
  • Querying:將 LINQ-to-Entities查詢轉換為SQL查詢發送給資料庫。
  • Change Tracking: 跟蹤從資料庫查詢的實體中發生的更改。
  • Persisting Data:根據實體狀態對資料庫執行插入、更新和刪除操作
  • Caching: DbContext在預設情況下進行第一級緩存。它存儲在上下文類的生命周期中檢索的實體。
  • Manage Relationship: DbContext還可以通過CSDL、MSL和SSDL在資料庫先行或模型先行方法中管理關係,或者在代碼優先的方法中使用。
  • Object Materialization:DbContext將原始表數據轉換為實體對象。

【實例化DbContext】

using (var db = new SchoolSchemaEntities())
{
    //數據操作...
}

【將DbContext轉換成ObjectContext】

using (var db = new SchoolSchemaEntities())
{
    var objectContext = (db as System.Data.Entity.Infrastructure.IObjectContextAdapter).ObjectContext;
} 

原文:
http://www.entityframeworktutorial.net/EntityFramework5/create-dbcontext-in-entity-framework5.aspx
http://www.entityframeworktutorial.net/EntityFramework4.3/dbcontext-vs-objectcontext.aspx


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

-Advertisement-
Play Games
更多相關文章
  • using System; using System.IO; using System.Text; using System.Xml; using System.Xml.Serialization; //using System.Runtime.Serialization.Json; using S ...
  • using System; using System.Collections.Generic; using System.Text; using System.Data; using System.Reflection; using System.Collections; using System. ...
  • 下拉框聯動效果,我們以部門--職位為例,選擇部門時,關聯到該部門的職位.下拉框的寫法就不多說了,詳細請參照前文. 視圖: 其中,dept是部門的屬性,deptlist是部門下拉框的屬性,job是職位的屬性,joblist是職位下拉框的屬性,下拉框綁定請參照前文 當部門變動的時候,職位也相應改變: 執 ...
  • using System; using System.Collections; using System.IO; using System.Drawing; using System.Drawing.Imaging; using System.Drawing.Drawing2D; namespace ...
  • using System.Web; using System.Configuration; namespace DotNet.Utilities { public class VideoConvert : System.Web.UI.Page { public VideoConvert() { } ...
  • 1.Model 2.cotroller 3.View ...
  • 可進行FTP的上傳,下載等其他功能,支持斷點續傳: using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Net; using System.Text; usi ...
  • 1.Model 2.controller (1)先寫一個程式綁定,可以通過資料庫綁定或者直接綁定 (2)初始化,並傳給視圖 3.視圖 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...