Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/apache-kafka/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Entity framework 4 如何确定在保存更改时失败的实体_Entity Framework 4 - Fatal编程技术网

Entity framework 4 如何确定在保存更改时失败的实体

Entity framework 4 如何确定在保存更改时失败的实体,entity-framework-4,Entity Framework 4,调用SaveChanges时,对象上下文中有许多挂起的更改。其中某个实体的某个列的值太长。这将导致SqlException:字符串或二进制数据将被截断 问题是如何确定违规实体/列?< P> < P>您可以考虑使用和构建您的好友类进行验证。然后,如果用户的数据不正确,则向用户显示友好的验证错误 Imports System.ComponentModel.DataAnnotations Namespace Domain #Region "Validation" <MetadataT

调用SaveChanges时,对象上下文中有许多挂起的更改。其中某个实体的某个列的值太长。这将导致SqlException:字符串或二进制数据将被截断

问题是如何确定违规实体/列?

< P>

< P>您可以考虑使用和构建您的好友类进行验证。然后,如果用户的数据不正确,则向用户显示友好的验证错误

Imports System.ComponentModel.DataAnnotations 

Namespace Domain 
#Region "Validation" 

<MetadataType(GetType(UserMetaData))> _ 
Partial Public Class User 
End Class 


''' <summary> 
''' Validation for all User data. 
''' </summary> 
''' <remarks>All validation is done at the Service Layer</remarks> 
Public Class UserMetaData 

    <DisplayName("name")> _ 
    <Required(ErrorMessage:="Username is required.")> _ 
    <StringLength(30, ErrorMessage:="Username cannot exceed 30 characters.")> _ 
    <RegularExpression("^\w{3,30}$", ErrorMessage:="Not a valid username.")> _ 
    Public Property UserName As String 

    <DisplayName("email")> _ 
    <StringLength(50, ErrorMessage:="Email Address cannot exceed 50 characters.")> _ 
    <RegularExpression("^([a-zA-Z0-9_\-\.]+)@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.)|(([a-zA-Z0-9\-]+\.)+))([a-zA-Z]{2,4}|[0-9]{1,3})$", ErrorMessage:="Not a valid email address.")> _ 
    Public Property Email As String 

    <DisplayName("website")> _ 
    <StringLength(256, ErrorMessage:="Web Address cannot exceed 256 characters.")> _ 
    <RegularExpression("^http(s?)\://[a-zA-Z0-9\-\.]+\.[a-zA-Z]{2,3}(/\S*)?$", ErrorMessage:="Not a valid website address.")> _ 
    Public Property WebSite As String 

    <DisplayName("about")> _ 
    <StringLength(2000, ErrorMessage:="Profile cannot exceed 2000 characters.")> _ 
    Public Property About As String 

    <DisplayName("region")> _ 
    <Required(ErrorMessage:="Region is required.")> _ 
    Public Property UserRegion As Integer 

    <DisplayName("birthdate")> _ 
    <DisplayFormat(ApplyFormatInEditMode:=True, ConvertEmptyStringToNull:=True, DataFormatString:="{0:MM/dd/yyyy}")> _ 
    Public Property BirthDate As DateTime 

End Class 
#End Region 
End Namespace
导入System.ComponentModel.DataAnnotations
命名空间域
#区域“验证”
_ 
部分公共类用户
末级
'''  
对所有用户数据进行“”验证。
'''  
''所有验证都在服务层完成
公共类用户元数据
_ 
_ 
_ 
_ 
公共属性用户名作为字符串
_ 
_ 
_ 
公共属性电子邮件作为字符串
_ 
_ 
_ 
公共财产网站作为字符串
_ 
_ 
关于作为字符串的公共属性
_ 
_ 
公共属性UserRegion为整数
_ 
_ 
公共财产生日作为日期时间
末级
#末端区域
结束命名空间
更多参考资料




你的搞笑——说真的,我需要能够告诉用户,修复字段x,因为它太长了。我可能是错的,但闪现出这样的信息:“出了问题,因为您的数据,请启动SQL Profiler并自己解决它”可能不会和用户一起飞。虽然简短,Dave的回答不是“错”。。。您没有指定需要向用户显示错误。。。您确实指定需要找出哪里出了问题。SQL分析器将告诉您这些信息。带有好友类的DataAnnotation将帮助您为用户执行验证。看看我下面的答案。事实上,我误解了这是一个验证问题。应在前端进行验证以防止此错误。应注释每个具有长度限制的属性,以便在值无效时发出通知。