public override int Update <TEntity>(TEntity entity, string table) { PublicHelper.CheckNull(entity); TypeDescriptor typeDescriptor = EntityTypeContainer.GetDescriptor(typeof(TEntity)); PublicHelper.EnsureHasPrimaryKey(typeDescriptor); Dictionary <PropertyDescriptor, object> keyValueMap = PrimaryKeyHelper.CreateKeyValueMap(typeDescriptor); IEntityState entityState = this.TryGetTrackedEntityState(entity); Dictionary <PropertyDescriptor, DbExpression> updateColumns = new Dictionary <PropertyDescriptor, DbExpression>(); foreach (PropertyDescriptor propertyDescriptor in typeDescriptor.PropertyDescriptors) { if (keyValueMap.ContainsKey(propertyDescriptor)) { keyValueMap[propertyDescriptor] = propertyDescriptor.GetValue(entity); continue; } bool hasSequence = propertyDescriptor.HasSequence(); if (hasSequence) { continue; } object val = propertyDescriptor.GetValue(entity); if (entityState != null && !entityState.HasChanged(propertyDescriptor, val)) { continue; } DbExpression valExp = DbExpression.Parameter(val, propertyDescriptor.PropertyType, propertyDescriptor.Column.DbType); updateColumns.Add(propertyDescriptor, valExp); } if (updateColumns.Count == 0) { return(0); } DbTable dbTable = table == null ? typeDescriptor.Table : new DbTable(table, typeDescriptor.Table.Schema); DbExpression conditionExp = PrimaryKeyHelper.MakeCondition(keyValueMap, dbTable); DbUpdateExpression e = new DbUpdateExpression(dbTable, conditionExp); foreach (var item in updateColumns) { e.UpdateColumns.Add(item.Key.Column, item.Value); } int ret = this.ExecuteNonQuery(e); if (entityState != null) { entityState.Refresh(); } return(ret); }
public bool SaveArtice(Ld_Info_Artice entity) { try { int systemId = entity.SystemID; string companyId = entity.CompanyID; string articeId = PrimaryKeyHelper.MakePrimaryKey(PrimaryKeyHelper.PrimaryKeyType.InfoArtice); if (IsExists(systemId, companyId, articeId)) { throw new Exception("主建ID重复!"); } entity.Hits = entity.Hits.ToInt(); entity.Sort = entity.Sort.ToInt(); entity.UpNum = entity.UpNum.ToInt(); entity.DownNum = entity.DownNum.ToInt(); entity.AllowComment = entity.AllowComment.ToBool(); entity.IsTop = entity.IsTop.ToBool(); entity.IsPush = entity.IsPush.ToBool(); entity.IsVip = entity.IsVip.ToBool(); entity.IsDraft = entity.IsDraft.ToBool(); entity.IsDel = entity.IsDel.ToBool(); entity.ArticeID = articeId; entity.CreateDate = DateTime.Now; return(Add(entity)); } catch (Exception ex) { throw new Exception(ex.Message); } }
public JsonResult SaveFileSingle() { try { var files = Request.Form.Files; int count = files.Count; long size = files.Sum(f => f.Length); if (count == 0) { return(Error("上传文件不能为空!")); } if (size == 0) { return(Error("上传文件大小不能为0字节!")); } var formFile = files.FirstOrDefault(); var name = formFile.Name; var fileSize = formFile.Length; var fileName = formFile.FileName; string uploadPath = CreateUploadPath(SystemID, CompanyID, fileName); string newFileName = CreateFileName(fileName); var filePath = string.Format("{0}\\{1}", uploadPath, newFileName); string src = ToRelativePath(filePath); string url = ToAbsoluteUri(filePath); string mediaId = PrimaryKeyHelper.MakePrimaryKey(PrimaryKeyHelper.PrimaryKeyType.BasicsMedia); var media = new Basics_Media() { SystemID = SystemID, CompanyID = CompanyID, MediaID = mediaId, FileName = fileName, FileExtension = Path.GetExtension(fileName).ToLower(), FileSize = fileSize, Url = url, Src = src, }; var data = new { mediaid = mediaId, name = fileName, size = fileSize, url, src }; if (formFile.Length > 0) { using (var stream = new FileStream(filePath, FileMode.Create)) { formFile.CopyTo(stream); stream.Flush(); } } bool result = MediaService.SaveMedia(media); if (result) { return(Success("ok", new { count, size, file = data })); } else { return(Error("upload fail!")); } } catch (Exception ex) { return(Error(ex.Message)); } }
public bool SaveBlock(Info_Block entity) { try { var infoBlock = PrimaryKeyHelper.PrimaryKeyType.InfoBlock; var primaryKeyLen = PrimaryKeyHelper.PrimaryKeyLen.V1; int systemId = entity.SystemID; string companyId = entity.CompanyID; string blockId = PrimaryKeyHelper.MakePrimaryKey(infoBlock, primaryKeyLen); string tags = entity.Tags; bool state = entity.State.ToBool(); if (string.IsNullOrEmpty(tags)) { throw new Exception("块标签不能为空!"); } bool verifyTags = IsExists(m => m.SystemID == systemId && m.CompanyID == companyId && m.Tags == tags); if (verifyTags) { throw new Exception("块标签不能重复!"); } entity.BlockID = blockId; entity.State = state; entity.CreateDate = DateTime.Now; return(Add(entity)); } catch (Exception ex) { throw new Exception(ex.Message); } }
public bool SaveNoticeCategory(Ld_Info_NoticeCategory entity) { try { var infoNoticeCategory = PrimaryKeyHelper.PrimaryKeyType.InfoNoticeCategory; var version = PrimaryKeyHelper.PrimaryKeyLen.V1; int systemId = entity.SystemID; string companyId = entity.CompanyID; string categoryId = PrimaryKeyHelper.MakePrimaryKey(infoNoticeCategory, version); string categoryName = entity.CategoryName; if (IsExists(m => m.SystemID == systemId && m.CompanyID == companyId && m.CategoryID == categoryId)) { throw new Exception("主建ID重复!"); } if (IsExists(m => m.SystemID == systemId && m.CompanyID == companyId && m.CategoryName == categoryName)) { throw new Exception("类别名称已存在!"); } entity.CategoryID = categoryId; entity.CreateDate = DateTime.Now; return(Add(entity)); } catch (Exception ex) { throw new Exception(ex.Message); } }
public IActionResult Register(string uuid, [FromBody]JObject fromValue) { long logId = 0; try { int systemId = SystemID; logId = BaseApiManager.SaveLogs(uuid, fromValue); if (!IsUuid(uuid)) { return Error(logId, "verify uuid fail!"); } bool isParams = IsRegisterParams(fromValue); var entity = GetInterfaceAccountByUuid(uuid); string companyId = entity.CompanyID; string memberId = PrimaryKeyHelper.MakePrimaryKey(PrimaryKeyHelper.PrimaryKeyType.MemberAccount); string phone = GetJObjectValue(fromValue, "phone"); string password = GetJObjectValue(fromValue, "password"); string ipAddress = Net.Ip; if (!Utility.IsMobilePhone(phone)) return Error(logId, "verify phone fail!"); var result = AccountService.SaveAccountRegisterPro(systemId, companyId, memberId, AlgorithmHelper.MD5(password), phone, ipAddress); if (result) return Success(logId, "ok"); else return Error(logId, "fail"); } catch (Exception ex) { return Error(logId, ex.Message); } }
public override int Delete <TEntity>(TEntity entity, string table) { PublicHelper.CheckNull(entity); TypeDescriptor typeDescriptor = EntityTypeContainer.GetDescriptor(typeof(TEntity)); PublicHelper.EnsureHasPrimaryKey(typeDescriptor); Dictionary <PropertyDescriptor, object> keyValueMap = new Dictionary <PropertyDescriptor, object>(typeDescriptor.PrimaryKeys.Count); foreach (PropertyDescriptor keyPropertyDescriptor in typeDescriptor.PrimaryKeys) { object keyVal = keyPropertyDescriptor.GetValue(entity); keyValueMap.Add(keyPropertyDescriptor, keyVal); } DbTable dbTable = table == null ? typeDescriptor.Table : new DbTable(table, typeDescriptor.Table.Schema); PropertyDescriptor timestampProperty = typeDescriptor.PropertyDescriptors.Where(a => a.IsTimestamp()).FirstOrDefault(); if (timestampProperty != null) { object timestampValue = timestampProperty.GetValue(entity); if (timestampValue != null) { keyValueMap[timestampProperty] = timestampValue; } } DbExpression conditionExp = PrimaryKeyHelper.MakeCondition(keyValueMap, dbTable); DbDeleteExpression e = new DbDeleteExpression(dbTable, conditionExp); return(this.ExecuteNonQuery(e)); }
public bool SaveAdvertisement(Ld_Extend_Advertisement entity, List <Ld_Extend_AdvertisementDetails> lists) { try { var advertisement = PrimaryKeyHelper.PrimaryKeyType.ExtendAdvertisement; var advertisementDetails = PrimaryKeyHelper.PrimaryKeyType.ExtendAdvertisementDetails; var version = PrimaryKeyHelper.PrimaryKeyLen.V1; string advertisementId = PrimaryKeyHelper.MakePrimaryKey(advertisement, version); entity.AdvertisementID = advertisementId; entity.Sort = entity.Sort.ToInt(); entity.State = entity.State.ToBool(); entity.CreateDate = DateTime.Now; if (lists == null) { throw new Exception("广告列表不能为空!"); } List <Ld_Extend_AdvertisementDetails> details = new List <Ld_Extend_AdvertisementDetails>(); foreach (var m in lists) { string advertisementDetailsId = PrimaryKeyHelper.MakePrimaryKey(advertisementDetails, version); m.SystemID = entity.SystemID; m.CompanyID = entity.CompanyID; m.DetailsID = advertisementDetailsId; m.AdvertisementID = advertisementId; m.Sort = m.Sort.ToInt(); m.State = m.State.ToBool(); m.CreateDate = DateTime.Now; details.Add(m); } int intnum = 0; var dbContext = new DAL.BaseDAL(LdCmsDbEntitiesContext); using (var db = dbContext.DbEntities()) { using (var trans = db.Database.BeginTransaction()) { try { dbContext.Add(entity); dbContext.Add(details); intnum = db.SaveChanges(); trans.Commit(); } catch (Exception) { trans.Rollback(); } return(intnum > 0); } } } catch (Exception ex) { throw new Exception(ex.Message); } }
public DeserializeHelper(string tableName, string fields) { this.Highlight = null; this._TableName = tableName; if (fields == "*" || string.IsNullOrWhiteSpace(fields)) { fields = ""; } this._Fields = fields; string[] source = fields.ToLower().Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries); Type typeFromHandle = typeof(T); PropertyInfo[] properties = typeFromHandle.GetProperties(); for (int i = 0; i < properties.Length; i++) { PropertyInfo propertyInfo = properties[i]; PrimaryKeyAttribute primaryKeyAttribute = PrimaryKeyHelper.GetPrimaryKeyAttribute(propertyInfo); if (primaryKeyAttribute != null) { this.PrimaryKey = primaryKeyAttribute; } if (string.IsNullOrWhiteSpace(fields) || source.Contains(propertyInfo.Name.ToLower())) { this._PropertyList.Add(propertyInfo); } } if (!string.IsNullOrWhiteSpace(this._TableName)) { this._DataTableSchema = new DataTable(this._TableName); } else { this._DataTableSchema = new DataTable("QueryData"); } foreach (PropertyInfo current in this.PropertyList) { DataColumn column = new DataColumn(current.Name, current.PropertyType); this._DataTableSchema.Columns.Add(column); } if (!string.IsNullOrWhiteSpace(this._Fields)) { if (source.Contains("score")) { DataColumn column2 = new DataColumn("score", typeof(double)); this._DataTableSchema.Columns.Add(column2); } if (source.Contains("_version_")) { DataColumn column3 = new DataColumn("_version_", typeof(string)); this._DataTableSchema.Columns.Add(column3); } } }
private string CreateTableID() { try { return(PrimaryKeyHelper.MakePrimaryKey(PrimaryKeyHelper.PrimaryKeyType.Table, PrimaryKeyHelper.PrimaryKeyLen.V1)); } catch (Exception ex) { throw new Exception(ex.Message); } }
public virtual TEntity QueryByKey <TEntity>(object key, string table, LockType @lock, bool tracking = false) { Expression <Func <TEntity, bool> > condition = PrimaryKeyHelper.BuildCondition <TEntity>(key); var q = this.Query <TEntity>(table, @lock).Where(condition); if (tracking) { q = q.AsTracking(); } return(q.FirstOrDefault()); }
public bool SaveMessageBoard(Ld_Service_MessageBoard entity) { try { string messageId = PrimaryKeyHelper.MakePrimaryKey(PrimaryKeyHelper.PrimaryKeyType.ServiceMessageBoard); entity.MessageID = messageId; entity.IsTop = false; entity.State = false; entity.CreateDate = DateTime.Now; return(Add(entity)); } catch (Exception ex) { throw new Exception(ex.Message); } }
protected virtual async Task <TEntity> QueryByKey <TEntity>(object key, string table, LockType @lock, bool tracking, bool @async) { Expression <Func <TEntity, bool> > condition = PrimaryKeyHelper.BuildCondition <TEntity>(key); var q = this.Query <TEntity>(table, @lock).Where(condition); if (tracking) { q = q.AsTracking(); } if (@async) { return(await q.FirstOrDefaultAsync()); } return(q.FirstOrDefault()); }
public void CreateTable <T>(T t) where T : class { try { string tableID = PrimaryKeyHelper.MakePrimaryKey(PrimaryKeyHelper.PrimaryKeyType.Table, PrimaryKeyHelper.PrimaryKeyLen.V1); string tableName = typeof(T).Name; string primaryKey = "SystemID"; string Account = "sys"; string NickName = "系统生成"; Log_Table entity = new Log_Table(); entity.TableID = tableID; entity.TableName = tableName; entity.PrimaryKey = primaryKey; entity.Account = Account; entity.NickName = NickName; List <Log_TableDetails> lists = new List <Log_TableDetails>(); PropertyInfo[] pi = typeof(T).GetProperties(); foreach (PropertyInfo p in pi) { string columnName = p.Name.ToString(); //得到属性的名称 Type columnType = p.PropertyType; //得到属性的类型 if (p.PropertyType.IsGenericType && p.PropertyType.GetGenericTypeDefinition() == typeof(Nullable <>)) { columnType = p.PropertyType.GetGenericArguments()[0]; } lists.Add(new Log_TableDetails() { TableID = tableID, TableName = tableName, ColumnName = columnName, ColumnDataType = columnType.Name, Account = Account, NickName = NickName, }); } TableService.SaveTable(entity); TableDetailsService.SaveTableDetails(lists); } catch (Exception ex) { throw new Exception(ex.Message); } }
public bool SavePage(Info_Page entity) { try { var infoPage = PrimaryKeyHelper.PrimaryKeyType.InfoPage; var primaryKeyLen = PrimaryKeyHelper.PrimaryKeyLen.V1; string pageId = PrimaryKeyHelper.MakePrimaryKey(infoPage, primaryKeyLen); int sort = entity.Sort.ToInt(); entity.PageID = pageId; entity.Sort = sort; entity.CreateDate = DateTime.Now; return(Add(entity)); } catch (Exception ex) { throw new Exception(ex.Message); } }
public bool SaveAdvertisementDetails(Ld_Extend_AdvertisementDetails entity) { try { var advertisementDetails = PrimaryKeyHelper.PrimaryKeyType.ExtendAdvertisementDetails; var version = PrimaryKeyHelper.PrimaryKeyLen.V1; string advertisementDetailsId = PrimaryKeyHelper.MakePrimaryKey(advertisementDetails, version); entity.DetailsID = advertisementDetailsId; entity.Sort = entity.Sort.ToInt(); entity.State = entity.State.ToBool(); entity.CreateDate = DateTime.Now; return(Add(entity)); } catch (Exception ex) { throw new Exception(ex.Message); } }
public bool SaveLinkGroup(Ld_Extend_LinkGroup entity) { try { var linkGroup = PrimaryKeyHelper.PrimaryKeyType.ExtendLinkGroup; var version = PrimaryKeyHelper.PrimaryKeyLen.V1; string linkGroupId = PrimaryKeyHelper.MakePrimaryKey(linkGroup, version); entity.GroupID = linkGroupId; entity.Sort = entity.Sort.ToInt(); entity.IsExternal = entity.IsExternal.ToBool(); entity.State = entity.State.ToBool(); entity.CreateDate = DateTime.Now; return(Add(entity)); } catch (Exception ex) { throw new Exception(ex.Message); } }
public bool SaveNotice(Ld_Info_Notice entity) { try { int systemId = entity.SystemID; string companyId = entity.CompanyID; string noticeId = PrimaryKeyHelper.MakePrimaryKey(PrimaryKeyHelper.PrimaryKeyType.InfoNotice); if (IsExists(systemId, companyId, noticeId)) { throw new Exception("主建ID重复!"); } entity.NoticeID = noticeId; entity.CreateDate = DateTime.Now; return(Add(entity)); } catch (Exception ex) { throw new Exception(ex.Message); } }
protected override async Task <int> Delete <TEntity>(TEntity entity, string table, bool @async) { PublicHelper.CheckNull(entity); TypeDescriptor typeDescriptor = EntityTypeContainer.GetDescriptor(typeof(TEntity)); PublicHelper.EnsureHasPrimaryKey(typeDescriptor); PairList <PrimitivePropertyDescriptor, object> keyValues = new PairList <PrimitivePropertyDescriptor, object>(typeDescriptor.PrimaryKeys.Count); foreach (PrimitivePropertyDescriptor keyPropertyDescriptor in typeDescriptor.PrimaryKeys) { object keyValue = keyPropertyDescriptor.GetValue(entity); PrimaryKeyHelper.KeyValueNotNull(keyPropertyDescriptor, keyValue); keyValues.Add(keyPropertyDescriptor, keyValue); } PrimitivePropertyDescriptor rowVersionDescriptor = null; if (typeDescriptor.HasRowVersion()) { rowVersionDescriptor = typeDescriptor.RowVersion; var rowVersionValue = typeDescriptor.RowVersion.GetValue(entity); this.EnsureRowVersionValueIsNotNull(rowVersionValue); keyValues.Add(typeDescriptor.RowVersion, rowVersionValue); } DbTable dbTable = PublicHelper.CreateDbTable(typeDescriptor, table); DbExpression conditionExp = PublicHelper.MakeCondition(keyValues, dbTable); DbDeleteExpression e = new DbDeleteExpression(dbTable, conditionExp); int rowsAffected = await this.ExecuteNonQuery(e, @async); if (rowVersionDescriptor != null) { PublicHelper.CauseErrorIfOptimisticUpdateFailed(rowsAffected); } return(rowsAffected); }
public virtual int Delete <TEntity>(TEntity entity, string table) { PublicHelper.CheckNull(entity); TypeDescriptor typeDescriptor = EntityTypeContainer.GetDescriptor(typeof(TEntity)); PublicHelper.EnsureHasPrimaryKey(typeDescriptor); Dictionary <PropertyDescriptor, object> keyValueMap = new Dictionary <PropertyDescriptor, object>(typeDescriptor.PrimaryKeys.Count); foreach (PropertyDescriptor keyPropertyDescriptor in typeDescriptor.PrimaryKeys) { object keyVal = keyPropertyDescriptor.GetValue(entity); keyValueMap.Add(keyPropertyDescriptor, keyVal); } DbTable dbTable = table == null ? typeDescriptor.Table : new DbTable(table, typeDescriptor.Table.Schema); DbExpression conditionExp = PrimaryKeyHelper.MakeCondition(keyValueMap, dbTable); DbDeleteExpression e = new DbDeleteExpression(dbTable, conditionExp); return(this.ExecuteNonQuery(e)); }
public bool SaveLink(Extend_Link entity) { try { var link = PrimaryKeyHelper.PrimaryKeyType.ExtendLink; var version = PrimaryKeyHelper.PrimaryKeyLen.V1; string linkId = PrimaryKeyHelper.MakePrimaryKey(link, version); string logo = entity.Logo; int typeId = string.IsNullOrEmpty(logo) ? 1 : 2; string typeName = string.IsNullOrEmpty(logo) ? "文字" : "LOGO"; entity.LinkID = linkId; entity.TypeID = typeId.ToByte(); entity.TypeName = typeName; entity.Sort = entity.Sort.ToInt(); entity.State = entity.State.ToBool(); entity.CreateDate = DateTime.Now; return(Add(entity)); } catch (Exception ex) { throw new Exception(ex.Message); } }
public bool SaveAccount(Ld_Member_Account entity) { try { int systemId = entity.SystemID; string companyId = entity.CompanyID; string memberId = PrimaryKeyHelper.MakePrimaryKey(PrimaryKeyHelper.PrimaryKeyType.MemberAccount, PrimaryKeyHelper.PrimaryKeyLen.V2); DateTime CreateDate = DateTime.Now; if (IsAccount(systemId, companyId, memberId)) { throw new Exception("会员ID已存在!"); } entity.MemberID = memberId; entity.State = true; entity.IsDel = false; entity.CreateDate = CreateDate; return(Add(entity)); } catch (Exception ex) { throw new Exception(ex.Message); } }
protected virtual async Task <int> DeleteByKey <TEntity>(object key, string table, bool @async) { Expression <Func <TEntity, bool> > condition = PrimaryKeyHelper.BuildCondition <TEntity>(key); return(await this.Delete <TEntity>(condition, table, @async)); }
protected virtual async Task <int> Update <TEntity>(TEntity entity, string table, bool @async) { PublicHelper.CheckNull(entity); TypeDescriptor typeDescriptor = EntityTypeContainer.GetDescriptor(typeof(TEntity)); PublicHelper.EnsureHasPrimaryKey(typeDescriptor); PairList <PrimitivePropertyDescriptor, object> keyValues = new PairList <PrimitivePropertyDescriptor, object>(typeDescriptor.PrimaryKeys.Count); IEntityState entityState = this.TryGetTrackedEntityState(entity); Dictionary <PrimitivePropertyDescriptor, DbExpression> updateColumns = new Dictionary <PrimitivePropertyDescriptor, DbExpression>(); foreach (PrimitivePropertyDescriptor propertyDescriptor in typeDescriptor.PrimitivePropertyDescriptors) { if (propertyDescriptor.IsPrimaryKey) { var keyValue = propertyDescriptor.GetValue(entity); PrimaryKeyHelper.KeyValueNotNull(propertyDescriptor, keyValue); keyValues.Add(propertyDescriptor, keyValue); continue; } if (propertyDescriptor.IsAutoIncrement || propertyDescriptor.HasSequence() || propertyDescriptor.IsRowVersion) { continue; } object val = propertyDescriptor.GetValue(entity); PublicHelper.NotNullCheck(propertyDescriptor, val); if (entityState != null && !entityState.HasChanged(propertyDescriptor, val)) { continue; } DbExpression valExp = DbExpression.Parameter(val, propertyDescriptor.PropertyType, propertyDescriptor.Column.DbType); updateColumns.Add(propertyDescriptor, valExp); } object rowVersionNewValue = null; if (typeDescriptor.HasRowVersion()) { var rowVersionDescriptor = typeDescriptor.RowVersion; var rowVersionOldValue = rowVersionDescriptor.GetValue(entity); rowVersionNewValue = PublicHelper.IncreaseRowVersionNumber(rowVersionOldValue); updateColumns.Add(rowVersionDescriptor, DbExpression.Parameter(rowVersionNewValue, rowVersionDescriptor.PropertyType, rowVersionDescriptor.Column.DbType)); keyValues.Add(rowVersionDescriptor, rowVersionOldValue); } if (updateColumns.Count == 0) { return(0); } DbTable dbTable = PublicHelper.CreateDbTable(typeDescriptor, table); DbExpression conditionExp = PublicHelper.MakeCondition(keyValues, dbTable); DbUpdateExpression e = new DbUpdateExpression(dbTable, conditionExp); foreach (var item in updateColumns) { e.UpdateColumns.Add(item.Key.Column, item.Value); } int rowsAffected = await this.ExecuteNonQuery(e, @async); if (typeDescriptor.HasRowVersion()) { PublicHelper.CauseErrorIfOptimisticUpdateFailed(rowsAffected); typeDescriptor.RowVersion.SetValue(entity, rowVersionNewValue); } if (entityState != null) { entityState.Refresh(); } return(rowsAffected); }
protected virtual async Task <TEntity> Insert <TEntity>(TEntity entity, string table, bool @async) { PublicHelper.CheckNull(entity); TypeDescriptor typeDescriptor = EntityTypeContainer.GetDescriptor(typeof(TEntity)); Dictionary <PrimitivePropertyDescriptor, object> keyValueMap = PrimaryKeyHelper.CreateKeyValueMap(typeDescriptor); Dictionary <PrimitivePropertyDescriptor, DbExpression> insertColumns = new Dictionary <PrimitivePropertyDescriptor, DbExpression>(); foreach (PrimitivePropertyDescriptor propertyDescriptor in typeDescriptor.PrimitivePropertyDescriptors) { if (propertyDescriptor.IsAutoIncrement) { continue; } object val = propertyDescriptor.GetValue(entity); if (propertyDescriptor.IsPrimaryKey) { keyValueMap[propertyDescriptor] = val; } PublicHelper.NotNullCheck(propertyDescriptor, val); DbParameterExpression valExp = DbExpression.Parameter(val, propertyDescriptor.PropertyType, propertyDescriptor.Column.DbType); insertColumns.Add(propertyDescriptor, valExp); } PrimitivePropertyDescriptor nullValueKey = keyValueMap.Where(a => a.Value == null && !a.Key.IsAutoIncrement).Select(a => a.Key).FirstOrDefault(); if (nullValueKey != null) { /* 主键为空并且主键又不是自增列 */ throw new ChloeException(string.Format("The primary key '{0}' could not be null.", nullValueKey.Property.Name)); } DbTable dbTable = PublicHelper.CreateDbTable(typeDescriptor, table); DbInsertExpression e = new DbInsertExpression(dbTable); foreach (var kv in insertColumns) { e.InsertColumns.Add(kv.Key.Column, kv.Value); } PrimitivePropertyDescriptor autoIncrementPropertyDescriptor = typeDescriptor.AutoIncrement; if (autoIncrementPropertyDescriptor == null) { await this.ExecuteNonQuery(e, @async); return(entity); } IDbExpressionTranslator translator = this.DatabaseProvider.CreateDbExpressionTranslator(); DbCommandInfo dbCommandInfo = translator.Translate(e); dbCommandInfo.CommandText = string.Concat(dbCommandInfo.CommandText, ";", this.GetSelectLastInsertIdClause()); //SELECT @@IDENTITY 返回的是 decimal 类型 object retIdentity = await this.ExecuteScalar(dbCommandInfo, @async); if (retIdentity == null || retIdentity == DBNull.Value) { throw new ChloeException("Unable to get the identity value."); } retIdentity = PublicHelper.ConvertObjectType(retIdentity, autoIncrementPropertyDescriptor.PropertyType); autoIncrementPropertyDescriptor.SetValue(entity, retIdentity); return(entity); }
public JsonResult Save(string memberId) { try { if (!IsSavePermission(memberId)) { return(Error("您没有操作权限,请联系系统管理员!")); } string fRankId = GetFormValue("fRankId"); string fRankName = GetFormValue("fRankName"); string fCompanyName = GetFormValue("CompanyName"); string fName = GetFormValue("fName"); string fSex = GetFormValue("fSex"); string fPhone = GetFormValue("fPhone"); string fEmail = GetFormValue("fEmail"); string fAddress = GetFormValue("fAddress"); string fRemark = GetFormValue("fRemark"); string fState = GetFormValue("fState"); string fMemberId = PrimaryKeyHelper.MakePrimaryKey(PrimaryKeyHelper.PrimaryKeyType.MemberAccount); if (!Utility.IsMobilePhone(fPhone)) { return(Error("手机号码格式错误!")); } string password = AlgorithmHelper.MD5(fPhone.Right(8)); Ld_Member_Account entity = new Ld_Member_Account() { SystemID = SystemID, CompanyID = CompanyID, MemberID = fMemberId, RankID = fRankId, RankName = fRankName, UserName = fPhone, Password = password, CompanyName = fCompanyName, Name = fName, NickName = fName, Sex = fSex.ToByte(), Phone = fPhone, Email = fEmail, Address = fAddress, Remark = fRemark, State = fState.ToBool(), TotalPoints = 0, TotalAmount = 0.00.ToDecimal(), TotalConsumption = 0.00.ToDecimal(), RegisterIpAddress = Net.Ip, RegisterTime = DateTime.Now, IsDel = false, CreateDate = DateTime.Now }; bool result = false; if (string.IsNullOrEmpty(memberId)) { result = AccountService.SaveAccount(entity); } else { var m = AccountService.GetAccount(SystemID, CompanyID, memberId); m.RankID = fRankId; m.RankName = fRankName; m.UserName = fPhone; m.CompanyName = fCompanyName; m.Name = fName; m.NickName = fName; m.Sex = fSex.ToByte(); m.Phone = fPhone; m.Email = fEmail; m.Address = fAddress; m.Remark = fRemark; m.State = fState.ToBool(); result = AccountService.UpdateAccount(m); } if (result) { return(Success("ok")); } else { return(Error("fail")); } } catch (Exception ex) { return(Error(ex.Message)); } }
public IActionResult SaveFileSingle(string access_token) { try { int systemId = SystemID; if (!IsAccessToken(access_token)) { return(Error("验证token失败!")); } var entity = AccountService.GetAccountByAccessTokenPro(systemId, access_token); if (entity == null) { return(Error("验证会员资料失败!")); } if (string.IsNullOrEmpty(entity.CompanyID)) { return(Error("验证会员资料失败!")); } string companyId = entity.CompanyID; string memberId = entity.MemberID; var files = Request.Form.Files; int count = files.Count; long size = files.Sum(f => f.Length); if (count == 0) { return(Error("上传文件不能为空!")); } if (size == 0) { return(Error("上传文件大小不能为0字节!")); } var formFile = files.FirstOrDefault(); var name = formFile.Name; var fileSize = formFile.Length; var fileName = formFile.FileName; string uploadPath = CreateUploadPath(systemId, companyId, fileName); string newFileName = CreateFileName(fileName); var filePath = string.Format("{0}\\{1}", uploadPath, newFileName); string src = ToRelativePath(filePath); string url = ToAbsoluteUri(filePath); string mediaId = PrimaryKeyHelper.MakePrimaryKey(PrimaryKeyHelper.PrimaryKeyType.BasicsMedia); var media = new Ld_Basics_Media() { SystemID = systemId, CompanyID = companyId, MediaID = mediaId, FileName = fileName, FileExtension = Path.GetExtension(fileName).ToLower(), FileSize = fileSize, Url = url, Src = src, }; var data = new { mediaid = mediaId, name = fileName, size = fileSize, url, src }; if (formFile.Length > 0) { using (var stream = new FileStream(filePath, FileMode.Create)) { formFile.CopyTo(stream); stream.Flush(); } } int result = MediaService.SaveMediaMember(memberId, media); if (result > 0) { return(Success("ok", new { count, size, file = data })); } else { return(Error("upload fail!")); } } catch (Exception ex) { return(Error(ex.Message)); } }
public IActionResult SaveImageCode(string access_token) { try { int systemId = SystemID; if (!IsAccessToken(access_token)) { return(Error("验证token失败!")); } var entity = AccountService.GetAccountByAccessTokenPro(systemId, access_token); if (entity == null) { return(Error("验证会员资料失败!")); } if (string.IsNullOrEmpty(entity.CompanyID)) { return(Error("验证会员资料失败!")); } string companyId = entity.CompanyID; string memberId = entity.MemberID; string base64String = Accessor.HttpContext.Request.GetInputStream(); string imageCode = ImageHelper.GetImageCode(base64String); long fileSize = imageCode.Length; string fileName = string.Format("{0}.{1}", GeneralCodeHelper.GetRandomInt(8), ImageHelper.GetImageExtension(base64String)); string uploadPath = CreateUploadPath(systemId, companyId, fileName); string newFileName = CreateFileName(fileName); var filePath = string.Format("{0}\\{1}", uploadPath, newFileName); string src = ToRelativePath(filePath); string url = ToAbsoluteUri(filePath); string mediaId = PrimaryKeyHelper.MakePrimaryKey(PrimaryKeyHelper.PrimaryKeyType.BasicsMedia); var media = new Ld_Basics_Media() { SystemID = systemId, CompanyID = companyId, MediaID = mediaId, FileName = fileName, FileExtension = Path.GetExtension(fileName).ToLower(), FileSize = fileSize, Url = url, Src = src, }; var data = new { mediaid = mediaId, name = fileName, size = fileSize, url, src }; if (fileSize > 0) { string savePath = ImageHelper.Base64StringToImage(filePath, base64String); } int result = MediaService.SaveMediaMember(memberId, media); if (result > 0) { return(Success("ok", new { count = 1, size = fileSize, file = data })); } else { return(Error("upload fail!")); } } catch (Exception ex) { return(Error(ex.Message)); } }
public override int Update <TEntity>(TEntity entity, string table) { PublicHelper.CheckNull(entity); TypeDescriptor typeDescriptor = EntityTypeContainer.GetDescriptor(typeof(TEntity)); PublicHelper.EnsureHasPrimaryKey(typeDescriptor); Dictionary <PropertyDescriptor, object> keyValueMap = PrimaryKeyHelper.CreateKeyValueMap(typeDescriptor); IEntityState entityState = this.TryGetTrackedEntityState(entity); Dictionary <PropertyDescriptor, DbExpression> updateColumns = new Dictionary <PropertyDescriptor, DbExpression>(); PropertyDescriptor timestampProperty = null; object timestampValue = null; foreach (PropertyDescriptor propertyDescriptor in typeDescriptor.PropertyDescriptors) { if (propertyDescriptor.IsPrimaryKey) { keyValueMap[propertyDescriptor] = propertyDescriptor.GetValue(entity); continue; } if (propertyDescriptor.IsAutoIncrement) { continue; } if (propertyDescriptor.IsTimestamp()) { timestampProperty = propertyDescriptor; timestampValue = propertyDescriptor.GetValue(entity); continue; } object val = propertyDescriptor.GetValue(entity); if (entityState != null && !entityState.HasChanged(propertyDescriptor, val)) { continue; } DbExpression valExp = DbExpression.Parameter(val, propertyDescriptor.PropertyType, propertyDescriptor.Column.DbType); updateColumns.Add(propertyDescriptor, valExp); } if (updateColumns.Count == 0) { return(0); } DbTable dbTable = table == null ? typeDescriptor.Table : new DbTable(table, typeDescriptor.Table.Schema); if (timestampValue != null) { keyValueMap[timestampProperty] = timestampValue; } DbExpression conditionExp = PrimaryKeyHelper.MakeCondition(keyValueMap, dbTable); DbUpdateExpression e = new DbUpdateExpression(dbTable, conditionExp); foreach (var item in updateColumns) { e.UpdateColumns.Add(item.Key.Column, item.Value); } int rowsAffected = 0; if (timestampValue == null) { rowsAffected = this.ExecuteNonQuery(e); if (entityState != null) { entityState.Refresh(); } return(rowsAffected); } List <Action <TEntity, IDataReader> > mappers = new List <Action <TEntity, IDataReader> >(); mappers.Add(GetMapper <TEntity>(timestampProperty, e.Returns.Count)); e.Returns.Add(timestampProperty.Column); IDataReader dataReader = this.ExecuteReader(e); using (dataReader) { while (dataReader.Read()) { rowsAffected++; foreach (var mapper in mappers) { mapper(entity, dataReader); } } } return(rowsAffected); }
public override TEntity Insert <TEntity>(TEntity entity, string table) { PublicHelper.CheckNull(entity); TypeDescriptor typeDescriptor = EntityTypeContainer.GetDescriptor(typeof(TEntity)); Dictionary <PropertyDescriptor, object> keyValueMap = PrimaryKeyHelper.CreateKeyValueMap(typeDescriptor); Dictionary <PropertyDescriptor, DbExpression> insertColumns = new Dictionary <PropertyDescriptor, DbExpression>(); foreach (PropertyDescriptor propertyDescriptor in typeDescriptor.PropertyDescriptors) { if (propertyDescriptor.IsAutoIncrement) { continue; } if (propertyDescriptor.HasSequence()) { DbMethodCallExpression getNextValueForSequenceExp = PublicHelper.MakeNextValueForSequenceDbExpression(propertyDescriptor); insertColumns.Add(propertyDescriptor, getNextValueForSequenceExp); continue; } object val = propertyDescriptor.GetValue(entity); if (propertyDescriptor.IsPrimaryKey) { keyValueMap[propertyDescriptor] = val; } DbParameterExpression valExp = DbExpression.Parameter(val, propertyDescriptor.PropertyType, propertyDescriptor.Column.DbType); insertColumns.Add(propertyDescriptor, valExp); } PropertyDescriptor nullValueKey = keyValueMap.Where(a => a.Value == null && !a.Key.IsAutoIncrement).Select(a => a.Key).FirstOrDefault(); if (nullValueKey != null) { /* 主键为空并且主键又不是自增列 */ throw new ChloeException(string.Format("The primary key '{0}' could not be null.", nullValueKey.Property.Name)); } DbTable dbTable = table == null ? typeDescriptor.Table : new DbTable(table, typeDescriptor.Table.Schema); DbInsertExpression insertExp = new DbInsertExpression(dbTable); foreach (var kv in insertColumns) { insertExp.InsertColumns.Add(kv.Key.Column, kv.Value); } List <Action <TEntity, IDataReader> > mappers = new List <Action <TEntity, IDataReader> >(); foreach (var item in typeDescriptor.PropertyDescriptors.Where(a => a.IsAutoIncrement || a.HasSequence())) { mappers.Add(GetMapper <TEntity>(item, insertExp.Returns.Count)); insertExp.Returns.Add(item.Column); } if (mappers.Count == 0) { this.ExecuteNonQuery(insertExp); return(entity); } IDbExpressionTranslator translator = this.DatabaseProvider.CreateDbExpressionTranslator(); List <DbParam> parameters; string sql = translator.Translate(insertExp, out parameters); IDataReader dataReader = this.Session.ExecuteReader(sql, parameters.ToArray()); using (dataReader) { dataReader.Read(); foreach (var mapper in mappers) { mapper(entity, dataReader); } } return(entity); }