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

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

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

DbContext類有一個OnModelCreating方法,它用于流利地配置領(lǐng)域類到數(shù)據(jù)庫模式的映射。下面我們以fluent API的方式來定義映射。
首先,先將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ù)庫上下文Context類中的OnModelCreating方法中使用fluent API來定義Product表的數(shù)據(jù)庫模式:

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作為復合主鍵
            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,默認是可以為null的
                .IsUnicode()  //設(shè)置ProductName列為Unicode字符,實際上默認就是Unicode字符,所以該方法可以不寫。
                .HasMaxLength(10); //設(shè)置ProductName列的最大長度是10
            base.OnModelCreating(modelBuilder);
        }
    }
}

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

什么是POCO?

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

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

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

相關(guān)文章

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

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

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

    NET?NativeAOT?用法指南

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

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

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

    .net core項目中常用的幾款類庫詳解(值得收藏)

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

    LiteralControl ASP.NET中的另類控件

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

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

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

    asp.net Server.MapPath方法注意事項

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

    asp.net替換和恢復html特殊字符

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

    ASP.net連接Excel的代碼

    ASP.net連接Excel的代碼,這個是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

最新評論

合水县| 团风县| 金华市| 垫江县| 庐江县| 湖口县| 华宁县| 元谋县| 永宁县| 南和县| 深圳市| 杭锦后旗| 布拖县| 阿鲁科尔沁旗| 唐海县| 通许县| 绥阳县| 瓮安县| 理塘县| 桂东县| 大邑县| 呈贡县| 新乐市| 涪陵区| 周口市| 洪江市| 兴隆县| 上虞市| 皋兰县| 广昌县| 南部县| 黄大仙区| 余庆县| 呼和浩特市| 道真| 广州市| 澄江县| 梨树县| 老河口市| 石门县| 来宾市|