最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

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

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

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類(lèi)中的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字符,所以該方法可以不寫(xiě)。
                .HasMaxLength(10); //設(shè)置ProductName列的最大長(zhǎng)度是10
            base.OnModelCreating(modelBuilder);
        }
    }
}

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

什么是POCO?

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

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

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

相關(guān)文章

  • 列舉ASP.NET頁(yè)面之間傳遞值的幾種方式

    列舉ASP.NET頁(yè)面之間傳遞值的幾種方式

    這篇文章主要介紹了列舉ASP.NET 頁(yè)面之間傳遞值的幾種方式,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2019-03-03
  • NET?NativeAOT?用法指南

    NET?NativeAOT?用法指南

    NativeAOT?是?.NET?中一個(gè)非常棒和強(qiáng)大的工具,有了?NativeAOT,你可以以可預(yù)測(cè)的性能構(gòu)建你的應(yīng)用,同時(shí)節(jié)省資源(更低的內(nèi)存占用和更小的二進(jìn)制大小),本文介紹NET?NativeAOT?指南,感興趣的朋友一起看看吧
    2024-02-02
  • .NET使用System.Timers.Timer類(lèi)實(shí)現(xiàn)程序定時(shí)執(zhí)行

    .NET使用System.Timers.Timer類(lèi)實(shí)現(xiàn)程序定時(shí)執(zhí)行

    這篇文章介紹了.NET使用System.Timers.Timer類(lèi)實(shí)現(xiàn)程序定時(shí)執(zhí)行的方法,文中通過(guò)示例代碼介紹的非常詳細(xì)。對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-07-07
  • .net core項(xiàng)目中常用的幾款類(lèi)庫(kù)詳解(值得收藏)

    .net core項(xiàng)目中常用的幾款類(lèi)庫(kù)詳解(值得收藏)

    這篇文章主要給大家介紹了關(guān)于.net core項(xiàng)目中常用的幾款類(lèi)庫(kù)的相關(guān)資料,文章通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用.net core具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧。
    2018-04-04
  • LiteralControl ASP.NET中的另類(lèi)控件

    LiteralControl ASP.NET中的另類(lèi)控件

    對(duì)于LiteralControl控件的應(yīng)用比較少,今天突然看到了,就弄個(gè)明白為好,所以總結(jié)出來(lái),供大家一起學(xué)習(xí)
    2012-01-01
  • Coolite Cool Study 3 MVC + Coolite 的實(shí)現(xiàn)代碼

    Coolite Cool Study 3 MVC + Coolite 的實(shí)現(xiàn)代碼

    啊,開(kāi)始以為MVC+Coolite結(jié)合的例子沒(méi)什么難度,但原來(lái)Coolite在MVC中需要特定設(shè)置一下某些屬性才行,費(fèi)了兩個(gè)小時(shí)才算大功告成,具體請(qǐng)看下文。還是先把這個(gè)例子的效果貼上來(lái)再說(shuō)。
    2009-05-05
  • asp.net Server.MapPath方法注意事項(xiàng)

    asp.net Server.MapPath方法注意事項(xiàng)

    當(dāng)我發(fā)布之后,對(duì)存儲(chǔ)圖片的文件夾創(chuàng)建了虛擬目錄,并賦予該目錄寫(xiě)入的權(quán)限,但是,當(dāng)我上傳圖片的時(shí)候,總是失敗。以前沒(méi)遇到過(guò)這種情況,覺(jué)得很是怪異,所以想盡辦法去解決。
    2008-09-09
  • asp.net替換和恢復(fù)html特殊字符

    asp.net替換和恢復(fù)html特殊字符

    替換html中的特殊字符需要進(jìn)行替換的文本。替換完的文本。
    2008-05-05
  • ASP.net連接Excel的代碼

    ASP.net連接Excel的代碼

    ASP.net連接Excel的代碼,這個(gè)是asp.net操作excel必須知道的基礎(chǔ),另外的技巧可以參考腳本之家之前發(fā)布的文章。
    2010-03-03
  • asp.net 大文件上傳 之 改版了的SlickUpload.HttpUploadModule(Krystalware.SlickUpload.dll)

    asp.net 大文件上傳 之 改版了的SlickUpload.HttpUploadModule(Krystalware

    以下代碼中所注釋的部分是所改版的地方。:) Krystalware.SlickUpload.dll
    2009-05-05

最新評(píng)論

新郑市| 黄石市| 定襄县| 巨鹿县| 商洛市| 宜城市| 清水县| 新建县| 米易县| 布尔津县| 伊宁县| 卢氏县| 清河县| 涪陵区| 合川市| 海口市| 新平| 崇州市| 丰县| 毕节市| 太和县| 濮阳市| 毕节市| 饶平县| 曲周县| 东山县| 堆龙德庆县| 定边县| 上栗县| 怀来县| 自治县| 石泉县| 大理市| 灵丘县| 灵璧县| 长阳| 溆浦县| 龙州县| 寿阳县| 柳林县| 鄯善县|