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

Entity?Framework管理一對二實(shí)體關(guān)系

 更新時(shí)間:2022年03月05日 09:37:18   作者:.NET開發(fā)菜鳥  
本文詳細(xì)講解了Entity?Framework管理一對二實(shí)體關(guān)系的方法,文中通過示例代碼介紹的非常詳細(xì)。對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下

上一篇文章中,簡單的介紹了使用Fluent API如何管理一對一的實(shí)體關(guān)系,在這篇文章中,接著介紹Fluent API如何管理一對多的實(shí)體關(guān)系。

要在數(shù)據(jù)庫中配置一對多關(guān)系,我們可以依賴EF約定,還可以使用數(shù)據(jù)注解或Fluent API來顯式創(chuàng)建關(guān)系。接下來使用捐贈(zèng)者Donator和支付方法PayWay這兩個(gè)類來舉例子,這里的一對多關(guān)系是:一個(gè)人可以通過多種支付方式贊助我。

支付方式類PayWay結(jié)構(gòu)如下:

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

namespace OneToMany.Model.Model
{
    public class PayWay
    {
        public int PayWayId { get; set; }

        public string Name { get; set; }

        public virtual Donator Donator { get; set; }
    }
}

因?yàn)橐粋€(gè)贊助者可以通過多種支付方式贊助我,這句話就表明了Donator對象應(yīng)該有一個(gè)PayWay的集合,因此,我們要給Donator類新加入一個(gè)集合屬性,捐贈(zèng)者類Donator結(jié)構(gòu)如下:

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

namespace OneToMany.Model.Model
{
    public class Donator
    {
        public int Id { get; set; }

        public string Name { get; set; }

        public string Amount { get; set; }

        public DateTime DonateDate { get; set; }

        /// <summary>
        /// PayWay類型的集合屬性
        /// </summary>
        public virtual ICollection<PayWay> PayWays { get; set; }
    }
}

Donator類的配置伙伴類的定義如下:

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

namespace OneToMany.Map.Map
{
    public class DonatorMap :EntityTypeConfiguration<Donator>
    {
        public DonatorMap()
        {
            ToTable("Donator");
            //將Name設(shè)置為必須
            this.Property(p => p.Name).IsRequired();
        }

    }
}

PayWay的配置伙伴類的定義如下:

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

namespace OneToMany.Map.Map
{
    public class PayWayMap : EntityTypeConfiguration<PayWay>
    {
        public PayWayMap()
        {
            ToTable("PayWay");
            this.Property(p => p.Name).HasMaxLength(16);
        }
    }
}

EFDbContext類定義如下:

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

namespace OneToMany.Map.EFContext
{
    public class EFDbContext:DbContext
    {
        public EFDbContext()
            : base("name=CodeFirstApplication")
        { }

        public DbSet<PayWay> PayWays { get; set; }
        public DbSet<Donator> Donators { get; set; }


        protected override void OnModelCreating(DbModelBuilder modelBuilder)
        {
            // 設(shè)置主鍵
            modelBuilder.Entity<PayWay>().HasKey(p => p.PayWayId);
            modelBuilder.Entity<Donator>().HasKey(p => p.DonatorId);
            // 設(shè)置一對多
            modelBuilder.Entity<Donator>().HasMany(p => p.PayWays).WithRequired(t => t.Donator);
            base.OnModelCreating(modelBuilder);
        }
    }
}

控制臺程序定義如下:

using OneToMany.Map.EFContext;
using OneToMany.Model.Model;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace OneToManyApplication
{
    class Program
    {
        static void Main(string[] args)
        {
            using (var context = new EFDbContext())
            {
                var donator = new Donator
                {
                    Amount = 6,
                    Name = "蝦米",
                    DonateDate = DateTime.Now,
                    PayWays = new List<PayWay> {
                      new PayWay{Name="支付寶"},
                      new PayWay{Name="微信"}

                    }
                };
                context.Donators.Add(donator);
                context.SaveChanges();
            }

            Console.WriteLine("執(zhí)行成功");
            Console.ReadKey();
        }
    }
}

程序運(yùn)行后數(shù)據(jù)庫結(jié)構(gòu)如下:

查詢數(shù)據(jù):

到此這篇關(guān)于Entity Framework管理一對二實(shí)體關(guān)系的文章就介紹到這了。希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • ASP.net全局程序文件Global.asax用法分析

    ASP.net全局程序文件Global.asax用法分析

    這篇文章主要介紹了ASP.net全局程序文件Global.asax用法,較為詳細(xì)分析了Global.asax文件中幾個(gè)常見選項(xiàng)的含義及用法,需要的朋友可以參考下
    2014-10-10
  • ASP.NET MVC Layout如何嵌套

    ASP.NET MVC Layout如何嵌套

    這篇文章主要為大家詳細(xì)介紹了ASP.NET MVC Layout如何嵌套,ASP.NET MVC Layout進(jìn)行嵌套的方法,感興趣的小伙伴們可以參考一下
    2016-03-03
  • 淺談c#設(shè)計(jì)模式之單一原則

    淺談c#設(shè)計(jì)模式之單一原則

    這篇文章主要介紹了淺談.net設(shè)計(jì)模式之單一原則,需要的朋友可以參考下
    2014-12-12
  • 如何利用IIS調(diào)試ASP.NET網(wǎng)站程序詳解

    如何利用IIS調(diào)試ASP.NET網(wǎng)站程序詳解

    這篇文章主要給大家介紹了關(guān)于如何利用IIS調(diào)試ASP.NET網(wǎng)站程序的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-01-01
  • ASP.NET中彈出消息框的幾種常見方法

    ASP.NET中彈出消息框的幾種常見方法

    這篇文章主要介紹了ASP.NET中彈出消息框的幾種常見方法,給出了幾種常見的彈出消息框的方法,并總結(jié)對比了幾種方法的特點(diǎn),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2014-11-11
  • ASP.NET數(shù)組刪除重復(fù)值實(shí)現(xiàn)代碼

    ASP.NET數(shù)組刪除重復(fù)值實(shí)現(xiàn)代碼

    在ASP.NET編程中,要想刪除數(shù)組的重復(fù)值可以使用多種方法代碼實(shí)現(xiàn)相同的效果。今天,在某個(gè)博客中看到某功能代碼中的一小段代碼很不錯(cuò),它就是用來移動(dòng)數(shù)組中相同值的方法,分享給大家
    2015-10-10
  • .NET?Core配置連接字符串和獲取數(shù)據(jù)庫上下文實(shí)例

    .NET?Core配置連接字符串和獲取數(shù)據(jù)庫上下文實(shí)例

    這篇文章介紹了.NET?Core配置連接字符串和獲取數(shù)據(jù)庫上下文實(shí)例的方法,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-01-01
  • 如何判斷?.NET?Core?應(yīng)用程序以管理員身份運(yùn)行的

    如何判斷?.NET?Core?應(yīng)用程序以管理員身份運(yùn)行的

    這篇文章主要介紹了如何判斷?.NET?Core?應(yīng)用程序是以管理員身份運(yùn)行的,我們需要知道當(dāng)前程序是否以管理員身份運(yùn)行,以便執(zhí)行一些需要特殊權(quán)限的操作,下面為我們就來學(xué)習(xí)具體的方法吧,需要的朋友可以參考一下
    2022-03-03
  • 阿里大魚簡單發(fā)送短信功能.net core版

    阿里大魚簡單發(fā)送短信功能.net core版

    這篇文章主要介紹了阿里大魚發(fā)送短信功能.net core版,.net core版實(shí)現(xiàn),只是簡單發(fā)送短信功能,供大家參考,感興趣的小伙伴們可以參考一下
    2016-07-07
  • .NET?Core跨平臺資源監(jiān)控工具CZGL.SystemInfo用法

    .NET?Core跨平臺資源監(jiān)控工具CZGL.SystemInfo用法

    這篇文章介紹了.NET?Core跨平臺資源監(jiān)控工具CZGL.SystemInfo的用法,文中通過示例代碼介紹的非常詳細(xì)。對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-02-02

最新評論

汝南县| 乳源| 太仓市| 百色市| 来安县| 兴安盟| 阳朔县| 安图县| 文登市| 海南省| 墨脱县| 获嘉县| 长顺县| 通海县| 长垣县| 永福县| 田阳县| 南澳县| 仪陇县| 沐川县| 霍城县| 抚顺市| 大安市| 进贤县| 长兴县| 太康县| 平湖市| 乌鲁木齐县| 天津市| 清涧县| 新竹县| 洛阳市| 沙湾县| 锦屏县| 石阡县| 嘉禾县| 宁武县| 普定县| 滨海县| 仁布县| 大田县|