我正在尝试使用实体框架进行急切加载,其中我在区域和客户端之间具有一对多的关系
Posted
技术标签:
【中文标题】我正在尝试使用实体框架进行急切加载,其中我在区域和客户端之间具有一对多的关系【英文标题】:I am trying to do eager loading using Entity Framework where I have one-to-many relationship between region and client 【发布时间】:2021-08-28 19:35:33 【问题描述】:这是我的Region
模型类:
public class Region
[Key]
public Guid Id get; set;
public string Name get; set;
//navigation property
public virtual ICollection<Client> Clients get; set;
还有我的client
模型类:
public class Client
[Key]
public Guid Id get; set;
public string FullName get; set;
public string Email get; set;
public string Mobile get; set;
public virtual Region Regions get; set;
public string AlternateNumber get; set;
public string Address get; set;
public string ImageName get; set;
[NotMapped]
public IFormFile ImageFile get; set;
[NotMapped]
public string ImageSrc get; set;
我正在使用 Fluent API 进行关系映射:
builder.Entity<Client>()
.HasOne(c => c.Regions)
.WithMany(x => x.Clients)
.HasForeignKey(c => c.Id);
这里我需要RegionId
作为外键,但我无法得到它;我得到的只是ClientId
作为外键。
【问题讨论】:
【参考方案1】:您必须在 Client 表中添加一个 RegionId 列
public class Client
[Key]
public Guid Id get; set;
.....
public Guid RegionId get; set;
public virtual Region Region get; set;
....
和数据库上下文
modelBuilder.Entity<Client>(entity =>
entity.HasOne(d => d.Region)
.WithMany(p => p.Clients)
.HasForeignKey(d => d.RegionId)
.OnDelete(DeleteBehavior.ClientSetNull);
);
【讨论】:
以上是关于我正在尝试使用实体框架进行急切加载,其中我在区域和客户端之间具有一对多的关系的主要内容,如果未能解决你的问题,请参考以下文章