被设置为零的对象的属性
本文关键字:对象 属性 设置 | 更新日期: 2023-09-27 18:16:33
我创建了属性为competitionId
的对象。在处理程序中,我调用了接受该对象的web服务中的一个方法。我在调用方法并检查对象的行上放置了一个断点,它有这个competitionId
属性为21。但它抛出了一个错误,说competitionId不能为0。
当我通过webservice的测试客户端传递相同的值时,这些值被插入到DB中。在这里,除了这个competitionId
之外,所有其他属性都正确传递。competitionId
的数据类型为int
下面是错误信息
发生数据库错误。详情请与管理员联系。ErrorNumber=547, ErrorSeverity=16, ErrorState=0, ErrorLine=23
ErrorMessage= INSERT语句与外键约束"FK_CCS_VAS_tbl_ProblemStatement_CCS"冲突。冲突发生在数据库"DBNAME",表"dbo "。CCS_VAS_tbl_Competition",列' iccompetitionid '.
如果我通过测试客户端传递相同的值,它将成功插入!对象没有正确传递吗?是否将competitionId设置为其默认值0
?我检查了传递的对象,它对competitionId
有一些值。有什么问题吗?
附加信息:
在Reference.cs
[System.Xml.Serialization.XmlIgnoreAttribute()]
public bool CompetitionIdSpecified
{
get
{
return this.competitionIdFieldSpecified;
}
set
{
this.competitionIdFieldSpecified = value;
this.RaisePropertyChanged("CompetitionIdSpecified");
}
}
/// <remarks/>
如果我在Reference.cs
中注释这个,它工作得很好!但是我不能遵循这个方法,因为我必须在每次更新服务后手动更新reference.cs,而且它不可维护。
我查出原因了。
它正在生成一个名为Specified
的属性,当不设置为true
时,将CompetitionId
属性设置为0
。
这个
有两个解决方案- 设置
object.Specified=true;
,使值不被设置为0
- 在数据成员中设置
[DataMember(IsRequired = true)]
,以便在添加service reference
时不会创建指定属性
我使用了第二种解决方案,它对我来说很好
我从这个问题中找到了答案