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); }
/// <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)); } }
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); }
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); }
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)); }