小白的第一次使用:html
程序員寫程序,就比如一個物品的慢慢誕生,咱們今天的這個例子就能夠想象成一個物品慢慢的在編譯的過程當中,讓咱們所看到程序員
1、建立咱們所測試的項目數據庫
1.建立一個簡單的帶有模型層(Model)和數據訪問層(DAL)的控制檯應用程序架構。架構
DAL:數據訪問層,實現對數據庫的操做控制框架
Model:模型層,建立表ide
Text:控制檯,進行控制學習
2、開始建立模型測試
在Model層中建立一個你所須要的模型類。ui
咱們在這裏寫入一我的員模型spa
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{ };
3、建立上下文
咱們如今已經能夠說作出來一個模型,可是咱們要寫到程序裏面去,那麼咱們在這裏就要用到這個模型,所以在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