Code First nullable Foreign Key无法识别

时间:2018-01-16 15:01:40

标签: c# asp.net-mvc entity-framework-6

我制作了一个.Net MVC项目。首先,我创建了一个包含所有模型和Db上下文的ClassLibrary,并使用此库来处理数据库。现在我想在另一个解决方案的另一个项目中使用这个类库。我引用了类库,但是这个新项目不能识别可空的外键(例如"字符串"或者nullable" Int")。运行时出现错误。

类示例

[Table("PORT_CALLS")]
public class PORT_CALLS
{
    [Key]
    public Int64 SID { get; set; }

    [ForeignKey("SHIP_CALLS")]
    public Int64 SHIP_CALL_SID { get; set; }

    public virtual SHIP_CALLS SHIP_CALLS{ get; set; }

    [ForeignKey("MNG_OPERATORS")]
    public Int64 ? OPERATOR_SID { get; set; }

    [JsonIgnore]
    public virtual MNG_OPERATORS MNG_OPERATORS { get; set; }

    public Decimal ? FORE_DRAUGHT { get; set; }

    public Decimal ? MID_SHIP_DRAUGHT { get; set; }

    public Decimal ? AFT_DRAUGHT { get; set; }

    public Decimal ? AIR_DRAUGHT { get; set; }

    public Int16 ? IS_TANKER { get; set; }
}

错误:实体类型没有定义键定义此EntityType的键(所有可以为空的外键都会出现此错误)

1 个答案:

答案 0 :(得分:1)

您应该将[ForeignKey]属性应用于SHIP_CALLS属性,并使用提供外键的属性的名称:

[ForeignKey("SHIP_CALL_SID")]
public virtual SHIP_CALLS SHIP_CALLS{ get; set; }