コード例 #1
0
ファイル: GenericDAO.cs プロジェクト: vvmaja/OpenNos
        public SaveResult InsertOrUpdate(IEnumerable <TDTO> dtos)
        {
            try
            {
                using (OpenNosContext context = DataAccessHelper.CreateContext())
                {
                    context.Configuration.AutoDetectChangesEnabled = false;

                    DbSet <TEntity> dbset       = context.Set <TEntity>();
                    List <TEntity>  entitytoadd = new List <TEntity>();
                    foreach (TDTO dto in dtos)
                    {
                        TEntity entity = Mapper.Map <TEntity>(dto);
                        object  value  = PrimaryKey.GetValue(dto, null);

                        TEntity entityfound = null;
                        if (value is object[])
                        {
                            entityfound = dbset.Find((object[])value);
                        }
                        else
                        {
                            entityfound = dbset.Find(value);
                        }

                        if (entityfound != null)
                        {
                            Mapper.Map(entity, entityfound);

                            context.Entry(entityfound).CurrentValues.SetValues(entity);
                        }

                        if (value == null || entityfound == null)
                        {
                            //add in a temp list in order to avoid find(default(PK)) to find this element before savechanges
                            entitytoadd.Add(entity);
                        }
                    }

                    dbset.AddRange(entitytoadd);
                    context.Configuration.AutoDetectChangesEnabled = true;
                    context.SaveChanges();
                    return(SaveResult.Inserted);
                }
            }
            catch (Exception e)
            {
                Logger.Error(e);
                return(SaveResult.Error);
            }
        }
コード例 #2
0
 private AccountDTO Update(Account entity, AccountDTO account, OpenNosContext context)
 {
     if (entity != null)
     {
         // The Mapper breaks context.SaveChanges(), so we need to "map" the data by hand...
         // entity = _mapper.Map<Account>(account);
         entity.Authority            = account.Authority;
         entity.Name                 = account.Name;
         entity.Password             = account.Password;
         context.Entry(entity).State = EntityState.Modified;
         context.SaveChanges();
     }
     return(_mapper.Map <AccountDTO>(entity));
 }
コード例 #3
0
 protected override EquipmentOptionDTO Update(EquipmentOption entity, EquipmentOptionDTO equipment,
                                              OpenNosContext context)
 {
     if (entity == null)
     {
         return(_mapper.Map <EquipmentOptionDTO>(null));
     }
     entity.Level = equipment.Level;
     entity.Type  = equipment.Type;
     entity.Value = equipment.Value;
     entity.WearableInstanceId   = equipment.WearableInstanceId;
     context.Entry(entity).State = EntityState.Modified;
     context.SaveChanges();
     return(_mapper.Map <EquipmentOptionDTO>(entity));
 }
コード例 #4
0
ファイル: GenericDAO.cs プロジェクト: vvmaja/OpenNos
        public SaveResult InsertOrUpdate(ref TDTO dto)
        {
            try
            {
                using (OpenNosContext context = DataAccessHelper.CreateContext())
                {
                    TEntity         entity = Mapper.Map <TEntity>(dto);
                    DbSet <TEntity> dbset  = context.Set <TEntity>();

                    object  value       = PrimaryKey.GetValue(dto, null);
                    TEntity entityfound = null;
                    if (value is object[])
                    {
                        entityfound = dbset.Find((object[])value);
                    }
                    else
                    {
                        entityfound = dbset.Find(value);
                    }
                    if (entityfound != null)
                    {
                        Mapper.Map(entity, entityfound);

                        context.Entry(entityfound).CurrentValues.SetValues(entity);
                        context.SaveChanges();
                    }
                    if (value == null || entityfound == null)
                    {
                        dbset.Add(entity);
                    }
                    context.SaveChanges();
                    dto = Mapper.Map <TDTO>(entity);

                    return(SaveResult.Inserted);
                }
            }
            catch (Exception e)
            {
                Logger.Error(e);
                return(SaveResult.Error);
            }
        }