欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Entity Framework使用DbModelBuilder API創(chuàng)建表結(jié)構(gòu)

 更新時(shí)間:2022年03月03日 11:24:27   作者:.NET開發(fā)菜鳥  
這篇文章介紹了Entity Framework使用DbModelBuilder API創(chuàng)建表結(jié)構(gòu)的方法,對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧

DbContext類有一個(gè)OnModelCreating方法,它用于流利地配置領(lǐng)域類到數(shù)據(jù)庫(kù)模式的映射。下面我們以fluent API的方式來(lái)定義映射。
首先,先將Product類注釋掉,重新編寫該類,重新編寫后的Product類:

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

namespace EFFluentAPI.Model
{
    public class Product
    {
        public int ProductNo { get; set; }

        public string ProductName { get; set; }

        public double ProductPrice { get; set; }
    }
}

然后在數(shù)據(jù)庫(kù)上下文Context類中的OnModelCreating方法中使用fluent API來(lái)定義Product表的數(shù)據(jù)庫(kù)模式:

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

namespace EFFluentAPI.EFContext
{
    public class Context:DbContext
    {
        public Context()
            : base("DbConnection")
        { }

        public DbSet<Product> Products { get; set; }

        /// <summary>
        /// 重新OnModelCreating方法
        /// </summary>
        /// <param name="modelBuilder"></param>
        protected override void OnModelCreating(DbModelBuilder modelBuilder)
        {
            //映射到表Product,ProductNo和ProductName作為復(fù)合主鍵
            modelBuilder.Entity<Product>().ToTable("Product").HasKey(p=>new {p.ProductNo,p.ProductName});
            //ProductNo映射到數(shù)據(jù)表中的列名是Id
            modelBuilder.Entity<Product>().Property(p => p.ProductNo).HasColumnName("Id");
            modelBuilder.Entity<Product>().Property(p => p.ProductName)
                .IsRequired() //設(shè)置ProductName是必須的,即不能為null,默認(rèn)是可以為null的
                .IsUnicode()  //設(shè)置ProductName列為Unicode字符,實(shí)際上默認(rèn)就是Unicode字符,所以該方法可以不寫。
                .HasMaxLength(10); //設(shè)置ProductName列的最大長(zhǎng)度是10
            base.OnModelCreating(modelBuilder);
        }
    }
}

modelBuilder.Entity<Product>()會(huì)得到EntityTypeConfiguration類的一個(gè)實(shí)例。此外,使用fluent API的一個(gè)重要決定因素是我們是否使用了外部的POCO類,即實(shí)體模型類是否來(lái)自一個(gè)類庫(kù)。我們無(wú)法修改類庫(kù)中類的定義,所以不能通過數(shù)據(jù)注解來(lái)提供映射細(xì)節(jié)。這種情況下,我們必須使用fluent API。

什么是POCO?

POCO是指Plain Old Class Object,也就是最基本的CLR Class,在原先的EF中,實(shí)體類通常是從一個(gè)基類繼承下來(lái)的,而且?guī)в写罅康膶傩悦枋?。而POCO則是指最原始的Class,換句話說(shuō)這個(gè)實(shí)體的Class僅僅需要從Object繼承即可,不需要從某一個(gè)特定的基類繼承。主要是配合Code First使用。Code First則是指我們先定義POCO這樣的實(shí)體Class,然后生成數(shù)據(jù)庫(kù)。實(shí)際上現(xiàn)在也可以使用Entity Framweork Power tools將已經(jīng)存在的數(shù)據(jù)庫(kù)反向生成POCO的Class(不通過edmx文件)。

程序運(yùn)行后創(chuàng)建的數(shù)據(jù)庫(kù)如下圖所示:

到此這篇關(guān)于Entity Framework使用DbModelBuilder API創(chuàng)建表結(jié)構(gòu)的文章就介紹到這了。希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • .Net?Core基于ImageSharp實(shí)現(xiàn)圖片縮放與裁剪

    .Net?Core基于ImageSharp實(shí)現(xiàn)圖片縮放與裁剪

    這篇文章介紹了.Net?Core基于ImageSharp實(shí)現(xiàn)圖片縮放與裁剪的方法,文中通過示例代碼介紹的非常詳細(xì)。對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-06-06
  • HttpHandler HttpModule入門篇

    HttpHandler HttpModule入門篇

    ASP.Net處理Http Request時(shí),使用Pipeline(管道)方式,由各個(gè)HttpModule對(duì)請(qǐng)求進(jìn)行處理,然后到達(dá) HttpHandler,HttpHandler處理完之后,仍經(jīng)過Pipeline中各個(gè)HttpModule的處理,最后將HTML發(fā)送到客戶端瀏覽器中。
    2010-01-01
  • asp.net core 實(shí)現(xiàn)一個(gè)簡(jiǎn)單的倉(cāng)儲(chǔ)的方法

    asp.net core 實(shí)現(xiàn)一個(gè)簡(jiǎn)單的倉(cāng)儲(chǔ)的方法

    本篇文章主要介紹了asp.net core 實(shí)現(xiàn)一個(gè)簡(jiǎn)單的倉(cāng)儲(chǔ)的方法,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來(lái)看看吧
    2017-12-12
  • 一文帶你了解.Net基于Threading.Mutex實(shí)現(xiàn)互斥鎖

    一文帶你了解.Net基于Threading.Mutex實(shí)現(xiàn)互斥鎖

    互斥鎖是一個(gè)互斥的同步對(duì)象,意味著同一時(shí)間有且僅有一個(gè)線程可以獲取它。這篇文章主要介紹了一文帶你了解.Net基于Threading.Mutex實(shí)現(xiàn)互斥鎖,感興趣的可以了解一下
    2021-06-06
  • 使用Blazor框架實(shí)現(xiàn)在前端瀏覽器中導(dǎo)入和導(dǎo)出Excel

    使用Blazor框架實(shí)現(xiàn)在前端瀏覽器中導(dǎo)入和導(dǎo)出Excel

    Blazor?是一個(gè)相對(duì)較新的框架,用于構(gòu)建具有?.NET?強(qiáng)大功能的交互式客戶端?Web?UI,本文主要介紹了如何在?Blazor?應(yīng)用程序中實(shí)現(xiàn)?SpreadJS?利用?.NET?的強(qiáng)大功能完成瀏覽器端的?Excel?導(dǎo)入導(dǎo)出,需要的可以參考一下
    2023-05-05
  • 遍歷Hashtable 的幾種方法

    遍歷Hashtable 的幾種方法

    遍歷Hashtable 的幾種方法...
    2007-02-02
  • .Net Core部署IIS的最細(xì)步驟

    .Net Core部署IIS的最細(xì)步驟

    本文來(lái)介紹一下.Net Core部署IIS,首先需要安裝.NET Core和IIS,并創(chuàng)建Web應(yīng)用程序項(xiàng)目,然后,將項(xiàng)目文件夾拷貝到IIS服務(wù)器上,并使用IIS管理器配置Web應(yīng)用程序,感興趣的可以了解一下
    2023-11-11
  • 動(dòng)態(tài)生成table并實(shí)現(xiàn)分頁(yè)效果心得分享

    動(dòng)態(tài)生成table并實(shí)現(xiàn)分頁(yè)效果心得分享

    動(dòng)態(tài)生成table并實(shí)現(xiàn)分頁(yè)在開發(fā)過程中時(shí)一個(gè)很好的應(yīng)用,接下來(lái)本文也要實(shí)現(xiàn)一個(gè)類似效果,感興趣的朋友可以參考下哈
    2013-04-04
  • ASP.NET?MVC遍歷驗(yàn)證ModelState的錯(cuò)誤信息

    ASP.NET?MVC遍歷驗(yàn)證ModelState的錯(cuò)誤信息

    這篇文章介紹了ASP.NET?MVC遍歷ModelState錯(cuò)誤信息的方法,文中通過示例代碼介紹的非常詳細(xì)。對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-09-09
  • asp.net實(shí)現(xiàn)在線音樂播放器示例

    asp.net實(shí)現(xiàn)在線音樂播放器示例

    這篇文章主要介紹了asp.net實(shí)現(xiàn)在線音樂播放器示例,需要的朋友可以參考下
    2014-02-02

最新評(píng)論