private int EntitySet <T, E>(T dto) where T : DTO.DTOBase { using (var context = new CharityEntities()) { if (dto.ID == 0) { dto.CreateDate = DateTime.Now; dto.Active = true; } else { dto.ModifyDate = DateTime.Now; } E entity = Map <T, E>(dto); var entry = context.Entry(entity); entry.State = dto.ID == 0 ? System.Data.Entity.EntityState.Added : System.Data.Entity.EntityState.Modified; if (dto.ID > 0) { entry.Property("CreateDate").IsModified = false; entry.Property("CreateUser").IsModified = false; } context.SaveChanges(); return((int)entry.Property("ID").OriginalValue); } }
private bool EntityDelete <T, E>(int id) where T : DTOBase { using (var context = new CharityEntities()) { T dto = Activator.CreateInstance <T>(); dto.ID = id; dto.Active = false; dto.ModifyDate = DateTime.Now; E entity = Map <T, E>(dto); var entry = context.Entry(entity); var activeProp = entry.Property("Active"); if (activeProp != null) { entry.State = System.Data.Entity.EntityState.Modified; foreach (var item in entity.GetType().GetProperties()) { if (item.GetGetMethod().IsVirtual) { continue; } if (item.Name == "Active" || item.Name == "ModifyDate" || item.Name == "State" || item.Name == "ID") { continue; } var prop = entry.Property(item.Name); if (prop != null) { prop.IsModified = false; } } } else { entry.State = System.Data.Entity.EntityState.Deleted; } context.SaveChanges(); return(true); } }