コード例 #1
0
ファイル: CompiledTableT.cs プロジェクト: x64/bltoolkit
        public T Execute(object[] parameters)
        {
            var db  = (IDataContext)parameters[0];
            var ctx = DataContextInfo.Create(db);

            return((T)GetInfo(db).GetElement(null, ctx, _expression, parameters));
        }
コード例 #2
0
ファイル: Extensions.cs プロジェクト: yrozhkov/bltoolkit
        public static int InsertOrReplace <T>(this IDataContext dataContext, IEnumerable <T> objs)
        {
            int cnt = 0;

            foreach (var obj in objs)
            {
                cnt += Query <T> .InsertOrReplace(DataContextInfo.Create(dataContext), obj);
            }
            return(cnt);
        }
コード例 #3
0
        Query <T> GetInfo(IDataContext dataContext)
        {
            var dataContextInfo = DataContextInfo.Create(dataContext);

            string        lastContextID;
            MappingSchema lastMappingSchema;
            Query <T>     query;

            lock (_sync)
            {
                lastContextID     = _lastContextID;
                lastMappingSchema = _lastMappingSchema;
                query             = _lastQuery;
            }

            var contextID     = dataContextInfo.ContextID;
            var mappingSchema = dataContextInfo.MappingSchema;

            if (lastContextID != contextID || lastMappingSchema != mappingSchema)
            {
                query = null;
            }

            if (query == null)
            {
                var key = new { contextID, mappingSchema };

                lock (_sync)
                    _infos.TryGetValue(key, out query);

                if (query == null)
                {
                    lock (_sync)
                    {
                        _infos.TryGetValue(key, out query);

                        if (query == null)
                        {
                            query = new ExpressionBuilder(new Query <T>(), dataContextInfo, _expression, _lambda.Parameters.ToArray())
                                    .Build <T>();

                            _infos.Add(key, query);

                            _lastContextID     = contextID;
                            _lastMappingSchema = mappingSchema;
                            _lastQuery         = query;
                        }
                    }
                }
            }

            return(query);
        }
コード例 #4
0
ファイル: Extensions.cs プロジェクト: yrozhkov/bltoolkit
 public static int Delete <T>([NotNull] this IDataContext dataContext, T obj)
 {
     return(Query <T> .Delete(DataContextInfo.Create(dataContext), obj));
 }
コード例 #5
0
ファイル: Extensions.cs プロジェクト: yrozhkov/bltoolkit
 public static int Update <T>(this IDataContext dataContext, T obj)
 {
     return(Query <T> .Update(DataContextInfo.Create(dataContext), obj));
 }
コード例 #6
0
ファイル: Extensions.cs プロジェクト: yrozhkov/bltoolkit
 public static object InsertWithOutput <T>(this IDataContext dataContext, T obj)
 {
     return(Query <T> .InsertWithOutput(DataContextInfo.Create(dataContext), obj));
 }
コード例 #7
0
ファイル: Extensions.cs プロジェクト: yrozhkov/bltoolkit
 public static int InsertOrReplace <T>(this IDataContext dataContext, T obj)
 {
     return(Query <T> .InsertOrReplace(DataContextInfo.Create(dataContext), obj));
 }