首先用不同的列名配置一对一映射EF代码.流利的API

本文关键字:EF 映射 代码 API 一对一 配置 | 更新日期: 2023-09-27 18:26:16

我有两个实体:

public partial class Web_Vendor
{  
    public string VendorID { get; set; }
    public virtual Deal_Brands DealBrand { get; set; }
}
 public partial class Deal_Brands
 {    
    public string Brand { get; set; }    
    public virtual Web_Vendor WebVendor { get; set; }    
 }

我需要使用fluent API配置使用字段VendorID <-> Brand的一对一映射。

modelBuilder.Entity<Web_Vendor>().HasOptional(x=>x.DealBrand).WithRequired(x=>x.WebVendor).
                Map(x=>x.MapKey(""))

有人能帮忙继续这条线吗?

首先用不同的列名配置一对一映射EF代码.流利的API

查看您的类,我发现Web_VendorDeal_Brands之间的关系是"一对零一"(1-0.1),而不是"一对一"。这意味着Deal_Brands主键必须是Web_Vendor主键。类应该是这样的:

public partial class Web_Vendor
{  
    public string VendorID { get; set; }
    public virtual Deal_Brands DealBrand { get; set; }
}
 public partial class Deal_Brands
 {    
    public string VendorID { get; set; }   
    public string Brand { get; set; }
    public virtual Web_Vendor WebVendor { get; set; }    
 }

映射:

modelBuilder.Entity<Web_Vendor>()
    .HasKey(i => i.VendorID);
modelBuilder.Entity<Deal_Brands>()
    .HasKey(i => i.VendorID);
modelBuilder.Entity<Web_Vendor>()
     .HasOptional(x=>x.DealBrand)
     .WithRequired(x=>x.WebVendor);

希望它能有所帮助!