在save change前,调用如下方法就好了
SetUpdateCheckStatus(this, UpdateCheck.Never);
public static void SetUpdateCheckStatus(DataClassesDataContext dataContext, UpdateCheck updateCheckStatus)
{
System.Collections.Generic.IEnumerable<MetaTable> tables = dataContext.Mapping.GetTables();
foreach (MetaTable table in tables)
{
System.Collections.ObjectModel.ReadOnlyCollection<MetaDataMember> dataMembers = table.RowType.DataMembers;
foreach (MetaDataMember dataMember in dataMembers)
{
if (!dataMember.IsPrimaryKey)
{
Type dataMemberType = dataMember.GetType();
//System.Data.Linq.Mapping.ColumnAttribute
if (dataMemberType.Name == "AttributedMetaDataMember")
{
FieldInfo underlyingAttributeField = dataMember.GetType().GetField("attrColumn", BindingFlags.Instance | BindingFlags.NonPublic);
if (underlyingAttributeField != null)
{
ColumnAttribute underlyingAttribute = underlyingAttributeField.GetValue(dataMember) as ColumnAttribute;
if (underlyingAttribute != null)
{ underlyingAttribute.UpdateCheck = updateCheckStatus; }
}
}
else
{
FieldInfo underlyingField = dataMember.Type.GetField("updateCheck", BindingFlags.Instance | BindingFlags.NonPublic);
if (underlyingField != null)
{ underlyingField.SetValue(dataMember, updateCheckStatus); }
}
}
}
}
}
网友评论