我创建了一个属性为competitionId
的对象。在处理程序中,我调用接受此对象的webservice中的方法。我在调用方法的行上放置了一个断点并检查了该对象,它将此competitionId
属性设置为21.但它抛出的错误是competitionId不能为0.
当我通过测试客户端为webservice传递相同的值时,值将被插入到数据库中。这里除了competitionId
之外,所有其他属性都正确传递。 competitionId
的数据类型为int
以下是错误消息
发生数据库错误。请联系管理员了解更多详情。 ErrorNumber = 547,ErrorSeverity = 16,ErrorState = 0,ErrorLine = 23
ErrorMessage = INSERT语句与FOREIGN KEY约束“FK_CCS_VAS_tbl_ProblemStatement_CCS”冲突。冲突发生在数据库“DBNAME”,表“dbo.CCS_VAS_tbl_Competition”,列'iCompetitionId'。
如果我通过测试客户端传递相同的值,它会成功插入!
对象没有正确传递? 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并且不可维护。
答案 0 :(得分:0)
我找到了原因。
正在生成一个名为Specified
的属性,如果未设置为true
,则会将CompetitionId
属性设置为0
。
这个有两个解决方案
object.Specified=true;
,使值不会设置为0
[DataMember(IsRequired = true)]
,以便在添加service reference
我使用了第二种解决方案,它对我来说很好用
找到了这个解决方案