RT,项目启动报错
无法加载关系“PPX.Mall.Model.ppx_accountpurchaseagreement_ibfk_1”,因为类型“PPX.Mall.Model.ppx_accounts”不可用。
以下信息对于解决上一个错误可能很有用:
类型“PPX.Mall.Model.ppx_accounts”上的属性“Status”有一个属性类型“PPX.Mall.Model.ppx_accounts+AccountStatus”,该属性类型无法映射到基元类型。
贴出部分关键代码,ppx_accounts model中定义了 枚举类型的status.
public ppx_accounts.AccountStatus Status { get; set; } public partial class ppx_accounts { /// <summary> /// 结算状态 /// </summary> public enum AccountStatus { /// <summary> /// 未结算 /// </summary> [Description("未结算")] UnAccount = 0, /// <summary> /// 已结算 /// </summary> [Description("已结算")] Accounted } }
奇怪的是 这个项目之前是可以支持枚举映射的(ef6),但是由于切换了一个DB(主要是全部换了个表名),重新用DB生成了 edmx, 然后就出了这个问题, 是需要什么配置来支持吗?对比了下之前旧代码,好像没发现 针对枚举的特别内容
枚举是无法直接映射的了,你在枚举的基础上继承byte就可以了。如下这样
public enum AccountStatus:byte
{
/// <summary>
/// 未结算
/// </summary>
[Description("未结算")]
UnAccount = 0,
/// <summary>
/// 已结算
/// </summary>
[Description("已结算")]
Accounted
}
如果是dbfirst,枚举类型映射不只只简单的加了枚举类型就可以的。正确的做法是打开edmx文件 - 右键Model Browser - Enum Types - 右键 Add New Enum Type。