我基本上有三张FK的桌子
制作
模型
车辆
我想在不修改数据库的情况下从Vehicle to Make导航属性
我试过了:
public class Make
{
public int MakeId {get;set;}
<snip>...</snip>
public virtual Vehicle Vehicles {get;set;}
}
<snip>Model</snip>
public class Vehicle
{
public int VehicleId {get;set}
<snip>...</snip>
public virtual Make VehicleMake {get;set;}
}
public class VehicleMap : EntityTypeConfiguration<Vehicle>
{
public VehicleMap()
{
this.HasKey(t => t.VehicleId);
<snip>...</snip>
this.HasRequired(t => t.VehicleMake)
.WithMany(t => t.Vehicles)
.HasForeignKey(t => t.Model.MakeId);
}
}
然而,当我这样做时,我收到了一个例外:
属性表达式'd =&gt; d.Model.MakeId'无效。该 表达式应该代表一个属性:C#:'t =&gt; t.MyProperty” VB.Net:'Function(t)t.MyProperty'。指定多个时 属性使用匿名类型:C#:'t =&gt;新{t.MyProperty1, t.MyProperty2}'VB.Net:'函数(t)新来自{t.MyProperty1, t.MyProperty2}'。
如何在Make&amp; amp;中创建导航属性?没有将Vehicle.ModelId列添加到我的数据库的车辆表?
答案 0 :(得分:2)
EF不支持这种类型的建模。您可以创建一个包裹Model.Make
的属性,如下所示。但它可能导致不必要的延迟加载。
public class Vehicle
{
public int VehicleId {get;set}
<snip>...</snip>
[NotMapped]
public virtual Make VehicleMake
{
get { return Model.Make; }
set { Model.Make = value; }
}
}