根据数据库优先实体模型验证条目长度

时间:2015-07-07 18:07:11

标签: c# asp.net webforms entity-framework-6 ef-database-first

我的客户端正在使用c#,EF6.0数据库优先和webforms。我想验证aspx表单中文本框条目的最大长度。我不想硬编码max-length客户端或服务器端,而是想从EF6.0实体模型中检索它,以便它匹配底层数据库优先字段的长度。该字段是nvarchar(40)。 (如果我在'代码优先'场景中工作,我会尝试使用验证注释,但这似乎不可能在'数据库优先'中。)

如何根据基础数据库优先字段长度进行验证?

2 个答案:

答案 0 :(得分:0)

您可以为生成的POCO创建部分类,并应用那些在重新生成时不会被覆盖的验证:Add data annotations to a class generated by entity framework

答案 1 :(得分:0)

我找到了一个很好的解决方案。从asp.net 4.5开始,可以将Data-Annotation属性与WebForms和Entity Frameworks一起使用。具体做法是:

using System.ComponentModel.DataAnnotations;

namespace Diary.DataAccess.Model
{
    // Accommodate EF database-first regeneration (required for webforms)

    [MetadataType(typeof(UserDetailMetaData))]
    public partial class UserDetail
    {
    }

    // Add the Data-Annotation attribute to the Title model-property.

    public class UserDetailMetaData
    {
        [MaxLength(40, ErrorMessage="Title must not be more than 40 characters long.")]
        public string Title { get; set; }
    }

}

(这不会从数据库优先元数据中检索常量,但会将其保存在一个位置。)