我的客户端正在使用c#,EF6.0数据库优先和webforms。我想验证aspx表单中文本框条目的最大长度。我不想硬编码max-length客户端或服务器端,而是想从EF6.0实体模型中检索它,以便它匹配底层数据库优先字段的长度。该字段是nvarchar(40)。 (如果我在'代码优先'场景中工作,我会尝试使用验证注释,但这似乎不可能在'数据库优先'中。)
如何根据基础数据库优先字段长度进行验证?
答案 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; }
}
}
(这不会从数据库优先元数据中检索常量,但会将其保存在一个位置。)