C# 基于数据库第一实体模型验证条目长度
我的客户机首先使用c#、EF6.0数据库和webforms。我想验证aspx表单中文本框条目的最大长度。我不想硬编码最大长度的客户端或服务器端,而是想从EF6.0实体模型中检索它,以便它与基础数据库第一个字段的长度匹配。该字段是nvarchar(40)。 (如果我在“代码优先”场景中工作,我会尝试使用验证注释,但在“数据库优先”中这似乎不可能)C# 基于数据库第一实体模型验证条目长度,c#,asp.net,webforms,entity-framework-6,ef-database-first,C#,Asp.net,Webforms,Entity Framework 6,Ef Database First,我的客户机首先使用c#、EF6.0数据库和webforms。我想验证aspx表单中文本框条目的最大长度。我不想硬编码最大长度的客户端或服务器端,而是想从EF6.0实体模型中检索它,以便它与基础数据库第一个字段的长度匹配。该字段是nvarchar(40)。 (如果我在“代码优先”场景中工作,我会尝试使用验证注释,但在“数据库优先”中这似乎不可能) 如何根据基础数据库的第一个字段长度进行验证?您可以为生成的POCO创建分部类,并在那里应用在重新生成时不会被覆盖的验证:您可以为生成的POCO创建分部类
如何根据基础数据库的第一个字段长度进行验证?您可以为生成的POCO创建分部类,并在那里应用在重新生成时不会被覆盖的验证:您可以为生成的POCO创建分部类,并在那里应用在重新生成时不会被覆盖的验证重新生成:我找到了一个很好的解决方案。由于asp.net 4.5,可以在WebForms和实体框架中使用数据注释属性。具体而言:
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; }
}
}
(这不会从数据库第一元数据中检索常量,但会将其保留在一个位置。)我找到了一个好的解决方案。由于asp.net 4.5,可以在WebForms和实体框架中使用数据注释属性。具体而言:
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; }
}
}
(这不会首先从数据库元数据中检索常量,但会将其保留在一个位置。)能否详细说明如何在webforms中使用该常量?能否详细说明如何在webforms中使用该常量?但仍需硬编码40以获得最大长度。我也在寻找一个解决方案,没有硬代码的视图和模型。换句话说,当我将我的数据库字段大小更改为1000时,我的代码不受影响,并按照以下规则运行。有什么想法吗?不幸的是,你仍然需要硬编码最大长度,这是一个我还没有解决的问题。这个答案有点帮助,因为它把常数放在一个地方(但不是很多!)。如果你能找到一种方法,如你在评论中所描述的那样,正确地/动态地完成它,我会非常感兴趣。是的,我也在寻求解决方案。我将在找到解决方案时与您分享。但您仍需要将最大长度硬编码为40。我也在寻找一个解决方案,没有硬代码的视图和模型。换句话说,当我将我的数据库字段大小更改为1000时,我的代码不受影响,并按照以下规则运行。有什么想法吗?不幸的是,你仍然需要硬编码最大长度,这是一个我还没有解决的问题。这个答案有点帮助,因为它把常数放在一个地方(但不是很多!)。如果你能找到一种方法,如你在评论中所描述的那样,正确地/动态地完成它,我会非常感兴趣。是的,我也在寻求解决方案。我将在找到解决方案时与大家分享。