Ejemplo n.º 1
0
        /// <summary>
        /// 如果对象属性改变,调用此方法,更新到文件(注意:主键属性不要更改)
        /// </summary>
        /// <param name="item"></param>
        public void Update(T item)
        {
            if (item == null)
            {
                return;
            }
            var key = _propertyInfo.GetValue(item);

            lock (_dataList)
            {
                if (_checkRepeatPrimaryKey)
                {
                    var _whereQuery = LinqHelper.InvokeWhereEquals(_dataList.Where(m => m != null && m.Data.Equals(item) == false).Select(m => m.Data).AsQueryable <T>(), _propertyInfo.Name, key);
                    if (LinqHelper.InvokeAny(_whereQuery))
                    {
                        throw new Exception($"{key} exist");
                    }
                }

                _storageQueue.Update(item);
            }
        }