某些背景
我有一个DataColumn
“ Col1”,它通过绑定绑定到外部WPF控件:
<Setter Property="ControlProperty" Value="{Binding Col1, Mode=TwoWay}" />
问题在于控件有时会使用 same 值更新“ ControlProperty”,但这会让我的DataRow
认为它已经更改,尽管实际上没有更改。此行为没有记录,并且其时机似乎无法确定。
实际问题
所以我的问题是,当写入 same 值时,是否有任何方法可以防止DataRow
被标记为已修改?这是一个代码和一个Dotnet fiddle来说明我的预期行为(请注意,这不是我的真实代码,这只是出于演示目的)。
using System;
using System.Data;
public class Program
{
public static void Main()
{
// Just setup the Set, nothing interesting
var dat = new DataSet("Set1");
var tab = new DataTable("Tab1");
tab.Columns.Add(new DataColumn("Col1", typeof(int)));
dat.Tables.Add(tab);
tab.Rows.Add(123);
var changes = dat.GetChanges();
dat.Merge(changes);
dat.AcceptChanges();
Console.WriteLine("Row status is: {0}", tab.Rows[0].RowState); // Unchanged
// Setting the same value will flag the Row "modified"
// This is external code that I don't control
tab.Rows[0]["Col1"] = tab.Rows[0]["Col1"];
if (dat.HasChanges()) // Actual Value: True, Expected Value: False
{
Console.WriteLine("Row status is: {0}", tab.Rows[0].RowState); // Actual Value: Modified, Expected Value: Unchanged
}
}
}
答案 0 :(得分:0)
您只需在代码中写一行
import gql from 'graphql-tag';
export const fancyMutation = gql`
mutation($id: ID!)
{
delete_something(id:$id) {
id
foo
bar
}
}
`;
在为列分配相同的值之后,如下所示。
tab.Rows[0].AcceptChanges();