用ASP.NET創建資料庫

来源:https://www.cnblogs.com/BLackStudy/archive/2019/08/01/11283321.html
-Advertisement-
Play Games

小白的第一次使用: 程式員寫程式,就好比一個物品的慢慢誕生,我們今天的這個例子就可以想象成一個物品慢慢的在編譯的過程中,讓我們所看到 一、創建我們所測試的項目 1.創建一個簡單的帶有模型層(Model)和數據訪問層(DAL)的控制台應用程式架構。 DAL:數據訪問層,實現對資料庫的操作控制 Mode ...


小白的第一次使用:

程式員寫程式,就好比一個物品的慢慢誕生,我們今天的這個例子就可以想象成一個物品慢慢的在編譯的過程中,讓我們所看到

一、創建我們所測試的項目

   1.創建一個簡單的帶有模型層(Model)數據訪問層(DAL)控制台應用程式架構。

DAL:數據訪問層,實現對資料庫的操作控制

Model:模型層,創建表

Text:控制台,進行控制

二、開始創建模型

Model層中創建一個你所需要的模型類。

我們在這裡寫入一個人員模型

1.People模型

using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Model
{
//指定表名
[Table("People")]
public class People
{
//指定該表的主鍵
[Key, DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public Guid ID { get; set; }
public string Name { get; set; }
public DateTime? BirthDay { get; set; }
public int? Age { get; set; }
}
}

 

這裡我們要註意的是using 中的System.ComponentModel.DataAnnotations;

這個我們要從引用中去查找,在引用處右鍵==>添加引用==>框架中的System.ComponentModel.DataAnnotations這個類庫,這個類庫是方便你進行主鍵(key)和表(Table)等相關的特性類別。

如果你需要將對應表中的欄位映射為可空,那麼在Student的屬性類型後面加個問號(?)即可,如public Datetime? BirthDay{ };

三、創建上下文

我們現在已經可以說做出來一個模型,但是我們要寫到程式裡面去,那麼我們在這裡就要用到這個模型,因此在DAL中需要引用Model  這樣子我們就可以把模型放到電腦中的意思,引用的方法和上面所說的引用System.ComponentModel.DataAnnotations這個類庫一樣,但是我們需要在解決方案中尋找這個Model,以及我們需要載入一個EntityFramework的引用,引用右鍵==>管理NuGet程式包==>找到EntityFramework 安裝 如果你安裝成功,則會出現以下的樣子。

這時候我們就可以創建上下文了。

首先我們要在DAL層進行一系列的操作,因為我們的模型現在正存著,我們要把它用起來,這裡很關鍵,我們首先需要引用Model層和上面我所敘述的EntityFramework這兩個引用,代碼如下

 

using Model;
using System;
using System.Collections.Generic;
using System.Data.Entity;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

 

namespace DAL {
public class DemoContext:DbContext {
//使用name=Text的連接字元串
public DemoContext() : base("Text") { }

 

//People屬性對應資料庫中的People表
public virtual DbSet<People> Peoples { get; set; }

 

protected override void OnModelCreating(DbModelBuilder modelBuilder) {
base.OnModelCreating(modelBuilder);
}
}
}

 

 

這個是讓你所做的這個模型可以最終展示到我們的面前,代碼如下:

 

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<!--Begin 創建連接字元串-->
<connectionStrings>
<add name="EFDemo" connectionString="server=.;Database=EFDemo;Trusted_Connection=true;" providerName="System.Data.SqlClient" />
</connectionStrings>
<!--End 創建連接字元串-->
<startup>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" />
</startup>
</configuration>

 

在這時候,其實你的資料庫中就已經有一個名稱叫做Text的資料庫,並且裡面有一張People的表了,我們是完全不用到資料庫中創建的,因為我們今天所學習的EF是代碼優先(CodeFirst),系統會識別連接字元串中的資料庫名稱(Database=Text)和數據上下文類型中的DbSet<People>,通過一個對象-關係映射框架(ORM)自動創建並映射資料庫Text和People表,這就是代碼優先的好處,不需要你去創建一個資料庫再去創建一些你所需要的東西。

 

好啦,當我們到這裡的時候,就已經完成三分之二了,這時候只需要最後一步,就是讓DAL層可以訪問到控制層,並讓控制層的東西與DAL層以及Model層進行交互,因此,我們需要引用這兩個層

方法跟我上面所說的一樣,

using System;
using DAL;
using Model;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Text
{
class Program
{
static void Main(string[] args)
{

using (DemoContext context = new DemoContext())
{
//在使用模型類之前需要強制創建資料庫 true:強制創建
context.Database.Initialize(true);
People peo=new People
{
Name = "小王",
BirthDay = DateTime.Parse("1998-08-01"),
Age = 22
};

//新增一個Student實體,相當於在Student表中,新增一條數據
context.Peoples.Add(peo);
//保存
context.SaveChanges();
}
}
}
}

這時候我們就可以先運行,之後就可以去資料庫中查看是否有我們所需要的這個Text庫以及這個People表了。

 

由夜月天大佬的EF-關於類庫中EntityFramework之CodeFirst(代碼優先)的操作淺析,自己做了一遍再用小白的方式分享給大家。

源網址:https://www.cnblogs.com/williamwsj/p/7253910.html

 


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

-Advertisement-
Play Games
更多相關文章
  • 事務的概念: 含義: 事務由單獨單元的一個或者多個sql語句組成,在這個單元中,每個sql語句時相互依賴的。而整個單獨單元作為一個不可分割的整體, 如果單元中某條sql語句一旦執行失敗或者產生錯誤,整個單元將會回滾,也就是所有受到影響的數據將會返回到事務開始以前的狀態;如果單元中的所有sql語句均執 ...
  • 人老了,玩不轉博客園的編輯器,詳細信息轉到:https://mp.weixin.qq.com/s/1r6YKBkyovQSMUgfm_VxBg 關鍵字:Github, NCC, Natasha,Roslyn, .NET Core2.0,.NET Core2.1,.NET Core2.2,.NET C ...
  • 問題 創建的項目提交到伺服器上,其他人下載項目後無法生成解決方案成功,無法自動生成dll,無法自動下載安裝相應的插件 解決方案 刪除packages文件夾即可,nuget就可以自動安裝相關的dll了 ...
  • 如上圖所示,一般這種問題都是dll版本和配置文件中的dll版本對應不上才引起的,可以通過替換對應版本的dll或者修改配置文件中的版本號即可。 然而我的情況是:修複後,還是不定時出現這樣的問題,我以為是被這個dll詛咒了,起初是真的沒啥辦法完全根治,出現問題後,只能覆蓋。 後來查看了下dll的屬性,原 ...
  • 1. 界面顯示 2.前端 jqgrid 代碼 //載入表格 function GetGrid() { var selectedRowIndex = 0; var $gridTable = $('#gridTable'); $gridTable.jqGrid({ url: "../../BaseMan ...
  • 1.界面顯示效果 2.資源下載 地址 1. jstree https://www.jstree.com/ 2.表格jqgrid https://blog.mn886.net/jqGrid/ 3.界面佈局 https://cloud.tencent.com/developer/section/1489 ...
  • 1.引用System.Media名稱空間下的類SoundPlayer SoundPlayer player = new SoundPlayer(); 2.方法調用Play(); public void Play() { player.SoundLocation = @".\x0pbk-swz4q.w ...
  • 現在圖片文字識別已經很成熟了,比如qq長按圖片,點擊圖片識別就可以識別圖片的文字,將不認識的、文字數量大的、或者不能賦值的值進行二次可複製功能。 我們現在就基於百度Ai開放平臺進行個人文字識別,demo使用的是C#控制台應用程式,後續有需要的可以嫁接到指定項目中使用,比如提供選擇圖片,點擊識別, 獲 ...
一周排行
    -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.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...