Exemplo n.º 1
0
        public override T Find <T>(string SqlStr, object Param)
        {
            var _Model = this._DbHelper.QueryFirstOrDefault <T>(SqlStr, Param);

            if (_Model == null)
            {
                return(ReflexHelper.CreateInstance <T>());
            }
            return(_Model);
        }
Exemplo n.º 2
0
        /// <summary>
        /// 创建主键
        /// </summary>
        /// <returns></returns>
        private object CreatePrimaryKey <T>(ref MemberInitExpression body, string FiledName, Type type, bool IsIdentity)
            where T : class, new()
        {
            object id;

            if (type == typeof(Guid?) || type == typeof(Guid))
            {
                var list  = new List <MemberBinding>();
                var Model = ReflexHelper.CreateInstance <T>();
                //检测 用户是否自己设置了主键
                var member = (body.Bindings.Where(item => item.Member.Name == FiledName).FirstOrDefault() as MemberAssignment);
                if (member == null)
                {
                    id = Guid.NewGuid();
                    var memberinfo = Model.GetType().GetProperty(FiledName);
                    list.Add(Expression.Bind(memberinfo, Expression.Constant(id, typeof(Guid))));
                }
                else
                {
                    var value = Parser.Eval(member.Expression);
                    if (value.ToGuid() == Guid.Empty)
                    {
                        id = Guid.NewGuid();
                    }
                    else
                    {
                        id = value;
                    }
                }

                foreach (MemberAssignment item in body.Bindings)
                {
                    if (item.Member.Name == FiledName)
                    {
                        list.Add(Expression.Bind(item.Member, Expression.Constant(id, item.Expression.Type)));
                    }
                    else
                    {
                        list.Add(Expression.Bind(item.Member, Expression.Constant(Parser.Eval(item.Expression), item.Expression.Type)));
                    }
                }

                body = Expression.MemberInit(Expression.New(typeof(T)), list);
                return(id);
            }
            else if ((type == typeof(int?) || (type == typeof(int)) && IsIdentity))
            {
                return(_DbHelper.GetLastInsertId());
            }
            else
            {
                return(Parser.Eval(((body.Bindings.Where(item => item.Member.Name == FiledName).FirstOrDefault()) as MemberAssignment).Expression));
            }
        }
Exemplo n.º 3
0
        public override T FindById <T>(Expression <Func <T, object> > Select, object Id)
        {
            var _SQL   = this.GetSqlStrById(Select, Id, null);
            var _Model = this._DbHelper.QueryFirstOrDefault <T>(_SQL.Sql_Parameter, _SQL.Parameter);

            if (_Model == null)
            {
                return(ReflexHelper.CreateInstance <T>());
            }
            return(_Model);
        }
Exemplo n.º 4
0
        public override T Find <T>(Expression <Func <T, object> > Select, Expression <Func <T, bool> > Where, Expression <Func <T, object> > OrderBy)
        {
            var _SQL   = this.GetSqlStr(Select, Where, OrderBy);
            var _Model = this._DbHelper.QueryFirstOrDefault <T>(_SQL.Sql_Parameter, _SQL.Parameter);

            if (_Model == null)
            {
                return(ReflexHelper.CreateInstance <T>());
            }
            return(_Model);
        }
Exemplo n.º 5
0
        public override object Add <T>(Expression <Func <T> > Func, List <SQL> li)
        {
            var body = (Func.Body as MemberInitExpression);

            return(this.Execute <T>(ref body, ReflexHelper.CreateInstance <T>(), li));
        }