Вот код для свойства RowState
:
public DataRowState RowState
{
get
{
if (this.oldRecord == this.newRecord)
{
if (this.oldRecord == -1)
{
return DataRowState.Detached;
}
if (0 < this._columns.ColumnsImplementingIChangeTrackingCount)
{
foreach (DataColumn column in this._columns.ColumnsImplementingIChangeTracking)
{
object obj2 = this[column];
if ((DBNull.Value != obj2) && ((IChangeTracking)obj2).IsChanged)
{
return DataRowState.Modified;
}
}
}
return DataRowState.Unchanged;
}
if (this.oldRecord == -1)
{
return DataRowState.Added;
}
if (this.newRecord == -1)
{
return DataRowState.Deleted;
}
return DataRowState.Modified;
}
}
как видите, вы ничего не можете сделать с его значением, потому что оно вычисляется, а не просто сохраняется. Самым простым решением может быть просто добавить еще один столбец в DataSet, который содержит состояние строки.
(Почему он всегда вычисляется до значения Добавлено ? Скорее всего, потому что, когда ваш сериализованный набор данных повторно гидратируется на сервере, новые строки создаются и добавляются в набор данных - так что значение довольно буквально верно. Если вы последуете приведенному выше предложению добавить еще один столбец в набор данных, это потребует изменения серверного кода, чтобы можно было его изучить и обработать - если вы собираетесь внести такого рода изменения, то, возможно, оно того стоит делать все это и перекодировать этот сервис, чтобы вместо него использовать правильные сериализуемые DTO?).