public static void ResetProperties( this ObjectContext oc, object targetObject) { EntityType entityType = oc.MetadataWorkspace.GetItem <EntityType>( targetObject.GetType().FullName, DataSpace.CSpace); ObjectStateEntry objectStateEntry = oc .ObjectStateManager .GetObjectStateEntry(targetObject); CurrentValueRecord currentValues = objectStateEntry.CurrentValues; object dummy = Activator.CreateInstance(targetObject.GetType()); foreach (EdmProperty p in entityType.Properties.Where(x => x.IsPrimitiveType || x.IsComplexType)) { bool isKey = entityType.KeyProperties.Any(x => x.Name == p.Name); if (!isKey) { object v = ReflectionHelper.GetProperty(dummy, p.Name); int propertyOrdinal = currentValues.GetOrdinal(p.Name); currentValues.SetValue(propertyOrdinal, v); } } }
internal virtual void SetServerGenValue(object value) { if (this.RecordOrdinal == -1) { return; } CurrentValueRecord record = this.Record; EdmMember fieldType = record.DataRecordInfo.FieldMetadata[this.RecordOrdinal].FieldType; value = value ?? (object)DBNull.Value; value = this.AlignReturnValue(value, fieldType); record.SetValue(this.RecordOrdinal, value); }
public static void SetValue( this ObjectContext oc, object target, string propertyName, object propertyValue) { ObjectStateEntry objectStateEntry = oc .ObjectStateManager .GetObjectStateEntry(target); CurrentValueRecord currentValues = objectStateEntry.CurrentValues; int propertyOrdinal = currentValues.GetOrdinal(propertyName); currentValues.SetValue(propertyOrdinal, propertyValue); }