加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

asp.net-mvc-4 – 从数据库上传模型时丢失dataAnottation

发布时间:2020-12-16 07:17:38 所属栏目:asp.Net 来源:网络整理
导读:我有一个大的数据库现有数据库,我首先使用EF 5.0数据库,我遇到的问题是,如果我在类上创建任何数据装饰,如[stringlength(50)],那么数据库是上传,当我“从数据库上传”时,所有数据注释都消失了.如何保留它们? 解决方法 这很简单:你做不到!因为这些代码是自
我有一个大的数据库现有数据库,我首先使用EF 5.0数据库,我遇到的问题是,如果我在类上创建任何数据装饰,如[stringlength(50)],那么数据库是上传,当我“从数据库上传”时,所有数据注释都消失了.如何保留它们?

解决方法

这很简单:你做不到!因为这些代码是自动生成的,并且会在每次更新或更改时覆盖.

但是,您可以通过扩展模型来实现所需.假设EF为您生成了以下实体类:

namespace YourSolution
{
    using System;
    using System.Collections.Generic;

    public partial class News
    {
        public int ID { get; set; }
        public string Title { get; set; }
        public string Description { get; set; }        
        public int UserID { get; set; }

        public virtual UserProfile User{ get; set; }
    }
}

并且你想做一些工作来保存你的数据注释和属性.因此,请按照下列步骤操作

首先,在下面添加两个类(在任何你想要的地方,但最好在模型中),如下所示:

namespace YourSolution
{
    [MetadataType(typeof(NewsAttribs))]
    public partial class News
    {
         // leave it empty.
    }

    public class NewsAttribs
    {            
        // Your attribs will come here.
    }
}

然后将您想要的属性和属性添加到第二个类 – NewsAttribs. :

public class NewsAttrib
{
    [Display(Name = "News title")]
    [Required(ErrorMessage = "Please enter the news title.")]
    public string Title { get; set; }

    // and other properties you want...
}

笔记:

1)生成的实体类和您的类的名称空间必须相同 – 这里是YourSolution.

2)您的第一个类必须是部分的,其名称必须与EF生成的类相同.

通过这个,你的属性再也没有丢失过……

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读