91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Entity?Framework中怎么使用DbModelBuilder?API創建表結構

發布時間:2022-03-03 14:04:04 來源:億速云 閱讀:202 作者:iii 欄目:開發技術

這篇文章主要講解了“Entity Framework中怎么使用DbModelBuilder API創建表結構”,文中的講解內容簡單清晰,易于學習與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學習“Entity Framework中怎么使用DbModelBuilder API創建表結構”吧!

DbContext類有一個OnModelCreating方法,它用于流利地配置領域類到數據庫模式的映射。下面我們以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; }
    }
}

然后在數據庫上下文Context類中的OnModelCreating方法中使用fluent API來定義Product表的數據庫模式:

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映射到數據表中的列名是Id
            modelBuilder.Entity<Product>().Property(p => p.ProductNo).HasColumnName("Id");
            modelBuilder.Entity<Product>().Property(p => p.ProductName)
                .IsRequired() //設置ProductName是必須的,即不能為null,默認是可以為null的
                .IsUnicode()  //設置ProductName列為Unicode字符,實際上默認就是Unicode字符,所以該方法可以不寫。
                .HasMaxLength(10); //設置ProductName列的最大長度是10
            base.OnModelCreating(modelBuilder);
        }
    }
}

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

什么是POCO?

POCO是指Plain Old Class Object,也就是最基本的CLR Class,在原先的EF中,實體類通常是從一個基類繼承下來的,而且帶有大量的屬性描述。而POCO則是指最原始的Class,換句話說這個實體的Class僅僅需要從Object繼承即可,不需要從某一個特定的基類繼承。主要是配合Code First使用。Code First則是指我們先定義POCO這樣的實體Class,然后生成數據庫。實際上現在也可以使用Entity Framweork Power tools將已經存在的數據庫反向生成POCO的Class(不通過edmx文件)。

程序運行后創建的數據庫如下圖所示:

Entity?Framework中怎么使用DbModelBuilder?API創建表結構

感謝各位的閱讀,以上就是“Entity Framework中怎么使用DbModelBuilder API創建表結構”的內容了,經過本文的學習后,相信大家對Entity Framework中怎么使用DbModelBuilder API創建表結構這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關知識點的文章,歡迎關注!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

华安县| 淮滨县| 蒙自县| 山阴县| 丹寨县| 舒兰市| 江源县| 利津县| 河南省| 咸宁市| 屏南县| 淮安市| 商水县| 宜兴市| 五家渠市| 固镇县| 泊头市| 临沭县| 渭源县| 抚顺市| 浙江省| 昌乐县| 库车县| 饶阳县| 抚远县| 和林格尔县| 喀喇沁旗| 阿尔山市| 高密市| 奉贤区| 潜山县| 连山| 乐业县| 松阳县| 呼伦贝尔市| 康平县| 拉孜县| 诸暨市| 思茅市| 枝江市| 奎屯市|