【发布时间】:2018-01-17 06:19:22
【问题描述】:
我做了一个 .Net MVC 项目。首先,我创建了一个包含所有模型和 Db 上下文的 ClassLibrary,并且我使用这个库来处理数据库。现在我想在另一个解决方案的另一个项目中使用这个类库。我引用了类库,但这个新项目不识别可为空的外键(例如“字符串”或可为空的“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; }
}
错误:实体类型没有定义键定义此实体类型的键(所有可为空的外键都会出现此错误)
【问题讨论】:
-
您引用的新项目是否与共享项目的框架版本相同?
-
某些实体“没有定义键”,即不是 primary 键。该错误还应该为您提供错误实体的名称。
-
该模型格式正确,因为它已被其他应用程序成功使用。我观察到该模型仅与 MVC API 项目不兼容(当我在 WindowsForm 应用程序或控制台应用程序中使用此库时,它可以工作)。我在所有项目(4.5)中都使用相同版本的框架。
标签: c# asp.net-mvc entity-framework-6