Entity Framework如何管理一对二实体关系
导读:本文共2259.5字符,通常情况下阅读需要8分钟。同时您也可以点击右侧朗读,来听本文内容。按键盘←(左) →(右) 方向键可以翻页。
摘要: 要在数据库中配置一对多关系,我们可以依赖EF约定,还可以使用数据注解或Fluent API来显式创建关系。接下来使用捐赠者Donator和支付方法PayWay这两个类来举例子,这里的一对多关系是:一个人可以通过多种支付方式赞助我。支付方式类PayWay结构如下:usingSystem;usingSystem.Collections.Generic;using... ...
音频解说
目录
(为您整理了一些要点),点击可以直达。要在数据库中配置一对多关系,我们可以依赖EF约定,还可以使用数据注解或Fluent API来显式创建关系。接下来使用捐赠者Donator和支付方法PayWay这两个类来举例子,这里的一对多关系是:一个人可以通过多种支付方式赞助我。
支付方式类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();}}}
程序运行后数据库结构如下:
查询数据:
</div> <div class="zixun-tj-product adv-bottom"></div> </div> </div> <div class="prve-next-news">
本文:
Entity Framework如何管理一对二实体关系的详细内容,希望对您有所帮助,信息来源于网络。