Alarming server: Beijing occur error. Source: System.Data
Position: UniqueConstraint ==> Boolean IsConstraintViolated()
Message: Object reference not set to an instance of an object.
at System.Data.UniqueConstraint.IsConstraintViolated()
at System.Data.DataSet.EnableConstraints()
at System.Data.DataSet.set_EnforceConstraints(Boolean value)
at System.Data.DataTable.EndLoadData()
at Suzsoft.Alarming.DataAccess.ServerDataAccess.AddSendAlarming(SendAlarmingsRow dr)
at Suzsoft.Alarming.Service.SendEMail.OnExecute()代码:
AlarmingDataSet.SendAlarmingsDataTable dt = ServerDataAccess.GetSendAlarmings();
AlarmingDataSet.SendAlarmingsRow dr = dt.NewSendAlarmingsRow();
dr.SendAlarmingId = Guid.NewGuid();
dr.RecordId = Mail.RecordId;
dr.SendTime = DateTime.Now;
dr.EngineerId = Mail.EngineerID;
dr.Action = (short)Action.Email;
try
{
ServerDataAccess.AddSendAlarming(dr);
}
catch (Exception ex)
{
Logger.WriteLog(ex, "Save Send Alarming");
}public static void AddSendAlarming(AlarmingDataSet.SendAlarmingsRow dr)
{
SaveData();
m_CacheData.SendAlarmings.AddSendAlarmingsRow(dr);
try
{
SendAlarmingsTableAdapter sata = new SendAlarmingsTableAdapter();
sata.Update(dr);
IsLive = true;
}
catch
{
IsLive = false;
}
}使用的强类型DataSet.大侠快帮帮我...
Position: UniqueConstraint ==> Boolean IsConstraintViolated()
Message: Object reference not set to an instance of an object.
at System.Data.UniqueConstraint.IsConstraintViolated()
at System.Data.DataSet.EnableConstraints()
at System.Data.DataSet.set_EnforceConstraints(Boolean value)
at System.Data.DataTable.EndLoadData()
at Suzsoft.Alarming.DataAccess.ServerDataAccess.AddSendAlarming(SendAlarmingsRow dr)
at Suzsoft.Alarming.Service.SendEMail.OnExecute()代码:
AlarmingDataSet.SendAlarmingsDataTable dt = ServerDataAccess.GetSendAlarmings();
AlarmingDataSet.SendAlarmingsRow dr = dt.NewSendAlarmingsRow();
dr.SendAlarmingId = Guid.NewGuid();
dr.RecordId = Mail.RecordId;
dr.SendTime = DateTime.Now;
dr.EngineerId = Mail.EngineerID;
dr.Action = (short)Action.Email;
try
{
ServerDataAccess.AddSendAlarming(dr);
}
catch (Exception ex)
{
Logger.WriteLog(ex, "Save Send Alarming");
}public static void AddSendAlarming(AlarmingDataSet.SendAlarmingsRow dr)
{
SaveData();
m_CacheData.SendAlarmings.AddSendAlarmingsRow(dr);
try
{
SendAlarmingsTableAdapter sata = new SendAlarmingsTableAdapter();
sata.Update(dr);
IsLive = true;
}
catch
{
IsLive = false;
}
}使用的强类型DataSet.大侠快帮帮我...
{
Index constraintIndex = this.ConstraintIndex;
if (constraintIndex.HasDuplicates)
{
object[] uniqueKeyValues = constraintIndex.GetUniqueKeyValues();
for (int i = 0; i < uniqueKeyValues.Length; i++)
{
Range range = constraintIndex.FindRecords((object[]) uniqueKeyValues[i]);
if (1 < range.Count)
{
DataRow[] rows = constraintIndex.GetRows(range);
string error = ExceptionBuilder.UniqueConstraintViolationText(this.key.ColumnsReference, (object[]) uniqueKeyValues[i]);
for (int j = 0; j < rows.Length; j++)
{
rows[j].RowError = error;
foreach (DataColumn column in this.key.ColumnsReference)
{
rows[j].SetColumnError(column, error);
}
}
return true;
}
}
}
return false;
}
或者你可能引用的方法沒有加入這個方法的對象
在debug模式下 看那里出的错
如果是数据绑定
大多是 因为没有 查询出 需要的数据
sql 返回数据为空 的可能性比较大
第二.这是一个Windows Service,多线程.不太好跟踪.
第三.系统已经发布,我没有测试环境了.
没有测试环境了可以自己搭一个吗.
源代码你总该有吧,把那个web service单独拿出来,写一些驱动程序,模拟一些数据,测试一下.
先把问题的原因找出来.
m_CacheData.SendAlarmings.AddSendAlarmingsRow(dr);
这句比较有嫌疑!
m_CacheData是静态变量吧,会不会被其他方法修改?