Entity Framework如何管理一对二实体关系(entity,framework,开发技术)

时间:2024-04-29 02:43:19 作者 : 石家庄SEO 分类 : 开发技术
  • TAG :

要在数据库中配置一对多关系,我们可以依赖EF约定,还可以使用数据注解或Fluent API来显式创建关系。接下来使用捐赠者Donator和支付方法PayWay这两个类来举例子,这里的一对多关系是:一个人可以通过多种支付方式赞助我。

Entity Framework如何管理一对二实体关系

支付方式类PayWay结构如下:

usingSystem;usingSystem.Collections.Generic;usingSystem.Linq;usingSystem.Text;usingSystem.Threading.Tasks;namespaceOneToMany.Model.Model{publicclassPayWay{publicintPayWayId{get;set;}publicstringName{get;set;}publicvirtualDonatorDonator{get;set;}}}

因为一个赞助者可以通过多种支付方式赞助我,这句话就表明了Donator对象应该有一个PayWay的集合,因此,我们要给Donator类新加入一个集合属性,捐赠者类Donator结构如下:

usingSystem;usingSystem.Collections.Generic;usingSystem.Linq;usingSystem.Text;usingSystem.Threading.Tasks;namespaceOneToMany.Model.Model{publicclassDonator{publicintId{get;set;}publicstringName{get;set;}publicstringAmount{get;set;}publicDateTimeDonateDate{get;set;}///<summary>///PayWay类型的集合属性///</summary>publicvirtualICollection<PayWay>PayWays{get;set;}}}

Donator类的配置伙伴类的定义如下:

usingOneToMany.Model.Model;usingSystem;usingSystem.Collections.Generic;usingSystem.Data.Entity.ModelConfiguration;usingSystem.Linq;usingSystem.Text;usingSystem.Threading.Tasks;namespaceOneToMany.Map.Map{publicclassDonatorMap:EntityTypeConfiguration<Donator>{publicDonatorMap(){ToTable("Donator");//将Name设置为必须this.Property(p=>p.Name).IsRequired();}}}

PayWay的配置伙伴类的定义如下:

usingSystem;usingSystem.Collections.Generic;usingSystem.Linq;usingSystem.Text;usingSystem.Threading.Tasks;usingOneToMany.Model.Model;usingSystem.Data.Entity.ModelConfiguration;namespaceOneToMany.Map.Map{publicclassPayWayMap:EntityTypeConfiguration<PayWay>{publicPayWayMap(){ToTable("PayWay");this.Property(p=>p.Name).HasMaxLength(16);}}}

EFDbContext类定义如下:

usingOneToMany.Model.Model;usingSystem;usingSystem.Collections.Generic;usingSystem.Data.Entity;usingSystem.Linq;usingSystem.Text;usingSystem.Threading.Tasks;namespaceOneToMany.Map.EFContext{publicclassEFDbContext:DbContext{publicEFDbContext():base("name=CodeFirstApplication"){}publicDbSet<PayWay>PayWays{get;set;}publicDbSet<Donator>Donators{get;set;}protectedoverridevoidOnModelCreating(DbModelBuildermodelBuilder){//设置主键modelBuilder.Entity<PayWay>().HasKey(p=>p.PayWayId);modelBuilder.Entity<Donator>().HasKey(p=>p.DonatorId);//设置一对多modelBuilder.Entity<Donator>().HasMany(p=>p.PayWays).WithRequired(t=>t.Donator);base.OnModelCreating(modelBuilder);}}}

控制台程序定义如下:

usingOneToMany.Map.EFContext;usingOneToMany.Model.Model;usingSystem;usingSystem.Collections.Generic;usingSystem.Linq;usingSystem.Text;usingSystem.Threading.Tasks;namespaceOneToManyApplication{classProgram{staticvoidMain(string[]args){using(varcontext=newEFDbContext()){vardonator=newDonator{Amount=6,Name="虾米",DonateDate=DateTime.Now,PayWays=newList<PayWay>{newPayWay{Name="支付宝"},newPayWay{Name="微信"}}};context.Donators.Add(donator);context.SaveChanges();}Console.WriteLine("执行成功");Console.ReadKey();}}}

程序运行后数据库结构如下:

Entity Framework如何管理一对二实体关系

查询数据:

Entity Framework如何管理一对二实体关系

 </div> <div class="zixun-tj-product adv-bottom"></div> </div> </div> <div class="prve-next-news">
本文:Entity Framework如何管理一对二实体关系的详细内容,希望对您有所帮助,信息来源于网络。
上一篇:如何基于PyQt5制作数据处理小工具下一篇:

4 人围观 / 0 条评论 ↓快速评论↓

(必须)

(必须,保密)

阿狸1 阿狸2 阿狸3 阿狸4 阿狸5 阿狸6 阿狸7 阿狸8 阿狸9 阿狸10 阿狸11 阿狸12 阿狸13 阿狸14 阿狸15 阿狸16 阿狸17 阿狸18