Entity Framework使用配置夥伴創建數據庫

在上一篇文章中講瞭如何使用fluent API來創建數據表,不知道你有沒有註意到一個問題。上面的OnModelCreating方法中,我們隻配置瞭一個類Product,也許代碼不是很多,但也不算很少,如果我們有1000個類怎麼辦?都寫在這一個方法中肯定不好維護。EF提供瞭另一種方式來解決這個問題,那就是為每個實體類單獨創建一個配置類。然後在OnModelCreating方法中調用這些配置夥伴類。

創建Product實體類:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data.Entity.ModelConfiguration;

namespace EF配置夥伴.Model
{
    public class Product
    {
        public int ProductNo { get; set; }

        public string ProductName { get; set; }

        public double ProductPrice { get; set; }
    }
}

創建Product實體類的配置類:ProductMap,配置類需要繼承自EntityTypeConfiguration泛型類,EntityTypeConfiguration位於System.Data.Entity.ModelConfiguration命名空間下,ProductMap類如下:

using EF配置夥伴.Model;
using System;
using System.Collections.Generic;
using System.Data.Entity.ModelConfiguration;
using System.Linq;
using System.Text;

namespace EF配置夥伴.EDM
{
    public class ProductMap   :EntityTypeConfiguration<Product>
    {
        public ProductMap()
        {
            // 設置生成的表名稱
            ToTable("ProductConfiguration");
            // 設置生成表的主鍵
            this.HasKey(p => p.ProductNo);
            // 修改生成的列名
            this.Property(p =>p.ProductNo).HasColumnName("Id");
            this.Property(p => p.ProductName)
                .IsRequired()  // 設置 ProductName列是必須的
                .HasColumnName("Name"); // 將ProductName映射到數據表的Name列

        }
    }
}

在數據上下文Context類的OnModelCreating()方法中調用:

using EF配置夥伴.EDM;
using EF配置夥伴.Model;
using System;
using System.Collections.Generic;
using System.Data.Entity;
using System.Linq;
using System.Text;

namespace EF配置夥伴.EFContext
{
    public class Context:DbContext
    {
        public Context()
            : base("DbConnection")
        { }

        public DbSet<Product> Products { get; set; }
        protected override void OnModelCreating(DbModelBuilder modelBuilder)
        {
            // 添加Product類的配置類
            modelBuilder.Configurations.Add(new ProductMap());
            base.OnModelCreating(modelBuilder);
        }


    }
}

查看數據庫,可以看到符合我們的更改:

這種寫法和使用modelBuilder是幾乎一樣的,隻不過這種方法更好組織處理多個實體。你可以看到上面的語法和寫jQuery的鏈式編程一樣,這種方式的鏈式寫法就叫Fluent API。

到此這篇關於Entity Framework使用配置夥伴創建數據庫的文章就介紹到這瞭。希望對大傢的學習有所幫助,也希望大傢多多支持WalkonNet。

推薦閱讀: