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);
                }
            }
        }
예제 #2
0
        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);
        }