已定义属性名称"ProductId"

And*_*ers 5 c# entity-framework entity-framework-6

我有一个使用FK ProductId有关系的实体,然后我使用复合键ProductId和VehicleId在同一个实体上有另一个关系.这不起作用.我明白了

在模型生成期间检测到一个或多个验证错误:

ProductId:Name:类型中的每个属性名称必须是唯一的.已定义属性名称"ProductId".

配置代码

public class BookingConfiguration : EntityTypeConfiguration<Booking>
    {
        public BookingConfiguration()
        {    
            ...

            HasRequired(b => b.Product)
                .WithMany(p => p.Bookings)
                .Map(m =>
                {
                    m.MapKey("ProductId");
                });

            HasRequired(b => b.Vehicle)
                .WithMany(v => v.Bookings)
                .Map(m =>
                {
                    m.MapKey("ProductId","VehicleId");
                });
        }
    }
Run Code Online (Sandbox Code Playgroud)

And*_*ers 3

Steve Greene 让我走上了正轨,我将ProductId和添加VehicleId到实体并使用

HasRequired(b => b.Vehicle)
    .WithMany()
    .HasForeignKey(b => new {b.ProductId, b.VehicleId});
Run Code Online (Sandbox Code Playgroud)

从域的角度来看,我不喜欢将外键添加到实体中,因此如果有人有更好的解决方案,请告诉我。