我正在尝试在两个表之间创建关系,但不断收到以下错误:
属性' CallLogId'上的ForeignKeyAttribute在类型上 ' Ylp.Web.ParkingApi.DataLayer.Entities.ApiCallLogDetailEntity'不是 有效。导航属性' ApiCallLog'没找到了 依赖类型 ' Ylp.Web.ParkingApi.DataLayer.Entities.ApiCallLogDetailEntity&#39 ;.该 名称值应该是有效的导航属性名称。
DbContextMapping:
modelBuilder.Entity<ApiCallLogDetailEntity>()
.HasRequired<ApiCallLogEntity>(p => p.ApiCallLog);
主要表格:
[Table("ApiCallLog")]
public class ApiCallLogEntity
{
[Key, Column(Order = 0)]
public string CallLogId { get; set; }
[Key, Column(Order = 1)]
public string UserId { get; set; }
[Required]
public string CallFilterId { get; set; }
[Required]
public DateTime LastUpdated { get; set; }
[Required]
public int Count { get; set; }
public virtual ICollection<ApiCallLogDetailEntity> Details { get; set; }
}
外国表:
[Table("ApiCallLogDetail")]
public class ApiCallLogDetailEntity
{
[ForeignKey("ApiCallLog")]
public string CallLogId { get; set; }
[Required]
public string PrametersHashCode { get; set; }
[Required]
public DateTime LastUpdated { get; set; }
public ApiCallLogEntity ApiCallLog { get;}
}
答案 0 :(得分:0)
外键必须引用父表的整个主键。在您的父表中,您有一个复合主键,其中包含CallLogId
和UserId
。该消息令人困惑,但这可能是错误的一部分。是否真的有必要在PK中包含UserId
?
另一个错误是你没有在依赖表中定义PK。如果PK上还需要UserId
,请将其包含在从属表中,并使其成为FK的一部分。