在Entity Framework 4 Code First中映射自定义关系

时间:2012-04-17 21:59:21

标签: entity-framework entity-framework-4

我有一个模型车辆和另一个模型,所以从车辆到模型之间存在一对多的关系。 车辆类定义如下:

public class Vehicle
{
    public int VehicleId { get; set; }
    ...
    public virtual Model Model { get; set; }
}

问题是我将这些类映射到现有数据库,所以我这样做:

modelBuilder.Entity<Vehicle>().ToTable("TB_Vehicles");
        modelBuilder.Entity<Vehicle>().Property(x => x.Color).HasColumnName("DR_Color");

        modelBuilder.Entity<Model>().ToTable("TB_Models");
        modelBuilder.Entity<Model>().Property(x => x.ModelId).HasColumnName("CD_Model");
        modelBuilder.Entity<Model>().Property(x => x.Description).HasColumnName("DS_Description");

所以我的表TB_Models有一个CD_Model列,它是一个主键,我的表TB_Vehicles也有一个CD_Model列,它是外键。 我该如何映射?

1 个答案:

答案 0 :(得分:0)

您可以按如下方式映射它。

   modelBuilder.Entity<Vehicle>()
            .HasOptional(v => v.Model)
            .WithMany()
            .Map(m => m.MapKey("CD_Model"));

如果外键不可为空,请使用HasRequired代替HasOptional