首页 新闻 会员 周边 捐助

.net ef6 dbfirst 枚举映射问题

0
[待解决问题]

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,  然后就出了这个问题, 是需要什么配置来支持吗?对比了下之前旧代码,好像没发现 针对枚举的特别内容

死神的背影的主页 死神的背影 | 小虾三级 | 园豆:667
提问于:2018-08-15 21:04
< >
分享
所有回答(2)
0

枚举是无法直接映射的了,你在枚举的基础上继承byte就可以了。如下这样

    public enum AccountStatus:byte
    {
        /// <summary>
        /// 未结算
        /// </summary>
        [Description("未结算")]
        UnAccount = 0,
        /// <summary>
        /// 已结算
        /// </summary>
        [Description("已结算")]
        Accounted
    }
Jeffcky | 园豆:2789 (老鸟四级) | 2018-08-15 21:09
0

如果是dbfirst,枚举类型映射不只只简单的加了枚举类型就可以的。正确的做法是打开edmx文件 - 右键Model Browser - Enum Types - 右键 Add New Enum Type。

飞舞的叶子 | 园豆:267 (菜鸟二级) | 2018-08-16 13:49
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册