Thursday 4 April 2013

Entity Framework generic save

Hi,

Do you know during saving entity you can loose some data if it is not available in object. To  avoid this you can perform generic save.

Please check below solution for entity generic save.

 public void UpdateRecord(EntityClass info)
        {
            using (EntitiesContext context = new (EntitiesContext())
            {
        context.EntityClasses.Find(info.ID);
                DbEntityEntry entry = context.ChangeTracker.Entries().FirstOrDefault();
                entry.CurrentValues.SetValues(info);
        GenericSave(context, entry);
            }
        }

 public static void GenericSave(EntitiesContext context, DbEntityEntry entry)
        {

            DbPropertyValues OriginalValues = entry.OriginalValues;
            DbPropertyValues CurrentValues = entry.CurrentValues;

            foreach (var orgProName in OriginalValues.PropertyNames)
            {
                foreach (var currentPropName in CurrentValues.PropertyNames)
                {
                    if (orgProName == currentPropName)
                    {
                        if (CurrentValues[currentPropName] == null && OriginalValues[orgProName] != null)
                        {
                            entry.CurrentValues[currentPropName] = OriginalValues[orgProName];
                        }
                        continue;
                    }
                }
            }
            context.SaveChanges();
        }

No comments:

Post a Comment