2013-02-17 67 views
1

我有以下类:我可以避免实体中的外键属性吗?

public class Bicycle 
    { 
     public int BicycleId { get; set; } 
     public DateTime YearOfManufacture { get; set; } 
     public int BicycleManufactuerId { get; set; } 
     public BicycleManufacturer BicycleManufacturer { get; set; } 
    } 

    public class BicycleManufacturer 
    { 
     public int BicycleManufacturerId { get; set; } 
     public string Description { get; set; } 
    } 

每个Bicycle必须有一个BicycleManufacturer(1:1)。可能有一些BicycleManufacturer与任何Bicycle都没有关联。大部分将与多个Bicycle实体关联。

我有以下流利的API代码来设置FK关系:

modelBuilder.Entity<Bicycle>() 
     .HasRequired(a => a.BicycleManufacturer) 
     .WithMany() 
     .HasForeignKey(u => u.BicycleManufactuerId); 

这一切似乎很好地工作。但是,我真的想要从Bicycle实体中删除BicycleManufacturerId属性。它只是在那里建立FK关系。如果我删除此属性,是否有办法创建正确的FK关系?通过增加对对方作为一个集合的关系

modelBuilder.Entity<Bicycle>() 
    .HasRequired(a => a.BicycleManufacturer) 
    .WithMany() 
    .Map(m => m.MapKey("BicycleManufactuerId")); 

回答

3

您可以删除属性和使用映射。

public class Bicycle 
    { 
     public int BicycleId { get; set; } 
     public DateTime YearOfManufacture { get; set; } 
     public int BicycleManufactuerId { get; set; } 
     public BicycleManufacturer BicycleManufacturer { get; set; } 
    } 

    public class BicycleManufacturer 
    { 
     public int BicycleManufacturerId { get; set; } 

     public ICollection<Bicycle> Bicycles { get; set; } 

     public string Description { get; set; } 
    } 
0

您也可以按照惯例做到这一点:

相关问题