EF的代碼優先模式(Code First)

好了,好了,話很少說,EF的思想啊介紹啊,請看上一篇:juejin.im/post/5d99d0…html

1、開始建立咱們的項目吧!

一、第一步,建立一個控制檯應用程序,而且添加NuGet包「EntityFramework」。

二、第二步,創建一個班級類和一個學生類,是一對多的關係

  • 「public virtual ICollection Student { get; set; }」表示一個班有多個學生, 經過「 public virtual Class Class { get; set; }」,來表示學生都是班級裏的一個,這樣就體現了,一對多的關係
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ConsoleApp1
{
    public class Class
    {
        public int Id { get; set; }
        public string ClassName { get; set; }
        public virtual ICollection<Student> Student { get; set; }//表明的意思是一個班級有不少個學生
    }
}

複製代碼
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ConsoleApp1
{
    public class Student
    {
        public int Id { get; set; }
        public string StuName { get; set; }
        public virtual Class Class { get; set; } //表示學生是班級的
    }
}

複製代碼

三、第三步,咱們在之前使用EF的時候是否是都有上下文??。因此咱們來創建一個上下文類。

  • 要繼承基類,DbContext,全部咱們要添加對「using System.Data.Entity;」的引用,若是你沒有的話,進行第一步,安裝「Entity Framewor」,而且右鍵添加引用。
  • 創建一個構造函數,而且指定鏈接字符串的名字「: base("conStr")」,使用daset綁定實體類
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Data.Entity;
namespace ConsoleApp1
{
    public class DbTextContext:DbContext
    {
        public DbTextContext(): base("conStr")
        {

        }
        public DbSet<Class> Classe { get; set; }
        public DbSet<Student> Student { get; set; }
    }
}


複製代碼

四、接下來咱們就配置咱們的鏈接字符串,在App.config裏添加以下代碼

<connectionStrings>
    <add name="conStr" connectionString="data source=.;initial catalog=數據庫名寫你要建立的;persist security info=True;user id=xx;password=xxxxxx;MultipleActiveResultSets=True;App=EntityFramework" providerName="System.Data.SqlClient" />
  </connectionStrings>
複製代碼

五、好了,咱們的基本配置已經完成了,在main裏寫如下,代碼

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

namespace ConsoleApp1
{
    class Program
    {
        static void Main(string[] args)
        {
            using (DbTextContext db = new DbTextContext())
            {
                //建立數據庫,沒有就建立
                db.Database.CreateIfNotExists();
                db.SaveChanges();
            }
        }
    }
}

複製代碼

第六步,好了,這樣咱們的數據庫,就已經建立好了,表的主外鍵也好了,不相信??本身打打去看看吧。另外,咱們發現創建的表後都有s,怎麼去掉呢?,在上下文添加

protected override void OnModelCreating(DbModelBuilder modelBuilder)
        {
            modelBuilder.Conventions.Remove<PluralizingTableNameConvention>();  //將映射成的表移除複數約定,不加s
        }


複製代碼

一些關於上下文的配置:www.cnblogs.com/libingql/p/…數據庫

結束語:你身後是你摯愛的人啊!加油!

相關文章
相關標籤/搜索