public VirtualDisk FindBy(string markedCode, QueryLevel level)
 {
     return(this.QuerySingle <VirtualDisk>("markedCode=@markedCode", (data) =>
     {
         data.Add("markedCode", markedCode);
     }, level));
 }
Example #2
0
 public IEnumerable <Role> FindRoles(IEnumerable <Guid> ids, QueryLevel level)
 {
     return(DataContext.Current.Query <Role>("id in @ids", (arg) =>
     {
         arg.Add("ids", ids);
     }, level));
 }
Example #3
0
 /// <summary>
 /// 仅指定查询级,表达式和填充参数都由各自的数据库定义决定
 /// </summary>
 /// <param name="level"></param>
 /// <returns></returns>
 public void Execute(QueryLevel level)
 {
     UsingData((express, fillArg) =>
     {
         DataContext.Current.Execute <T>(express, fillArg, level);
     });
 }
 public IEnumerable <EventMonitor> Top10Interrupteds(QueryLevel level)
 {
     return(DataContext.Current.Query <EventMonitor>("interrupted=@interrupted[top 10][order by createTime asc]", (data) =>
     {
         data.Add("@interrupted", true);
     }, level));
 }
Example #5
0
 public Permission FindByMarkedCode(string markedCode, QueryLevel level)
 {
     return(DataContext.Current.QuerySingle <Permission>("markedCode=@markedCode", (arg) =>
     {
         arg.Add("markedCode", markedCode);
     }, level));
 }
 public Account FindByMobileNumber(string mobileNumber, QueryLevel level)
 {
     return(this.QuerySingle <Account>("mobileNumber=@mobileNumber", (arg) =>
     {
         arg.Add("mobileNumber", mobileNumber);
     }, level));
 }
Example #7
0
        /// <summary>
        /// 从条目数据中获取对象
        /// <para>如果加载的对象是聚合根,那么如果存在缓冲区中,那么使用缓冲区的对象,如果不存在,则在数据库中查询并更新缓冲区</para>
        /// <para>如果加载的是成员对象,那么始终从数据库中查询</para>
        /// <para>不论是什么类型的对象都可以识别继承类型</para>
        /// </summary>
        /// <returns></returns>
        private object GetObjectFromEntry(DynamicData entry, QueryLevel level)
        {
            if (this.Type == DataTableType.AggregateRoot)
            {
                object id          = entry.Get(EntityObject.IdPropertyName);
                int    dataVersion = (int)entry.Get(GeneratedField.DataVersionName);
                string typeKey     = (string)entry.Get(GeneratedField.TypeKeyName);
                var    table       = string.IsNullOrEmpty(typeKey) ? this : GetDataTable(typeKey);

                if (level.Code == QueryLevel.MirroringCode)
                {
                    //镜像查询会绕过缓冲区
                    return(table.LoadObject(id, QueryLevel.None));
                }

                return(DomainBuffer.GetOrCreate(table.ObjectTip.ObjectType, id, dataVersion, () =>
                {
                    return (IAggregateRoot)table.LoadObject(id, QueryLevel.None); //由于查询条目的时候已经锁了数据,所以此处不用再锁定
                }));
            }
            else
            {
                object rootId      = entry.Get(this.Root.TableIdName);
                object id          = entry.Get(EntityObject.IdPropertyName);
                int    dataVersion = (int)entry.Get(GeneratedField.DataVersionName);
                string typeKey     = (string)entry.Get(GeneratedField.TypeKeyName);
                var    table       = string.IsNullOrEmpty(typeKey) ? this : GetDataTable(typeKey);

                //非聚合根是不能被加入到缓冲区的
                return(table.LoadObject(rootId, id));
            }
        }
        public int GetPageCount(string name, string email, QueryLevel level)
        {
            this.ManageLockLevel(level);
            var result = PersistGetPageCount(name, email, level);

            return(result);
        }
Example #9
0
        /// <summary>
        /// 执行一个持久层命令
        /// </summary>
        /// <param name="expression"></param>
        /// <param name="fillArg"></param>
        /// <param name="level"></param>
        internal void Execute(string expression, Action <DynamicData> fillArg, QueryLevel level)
        {
            //获取总数据数
            var exp = QueryCommand.Create(this, expression, level);

            Execute(exp, fillArg);
        }
Example #10
0
 public IEnumerable <VirtualDirectory> FindChilds(Guid parentId, QueryLevel level)
 {
     return(this.Query <VirtualDirectory>("parent.Id=@parentId[order by createTime desc]", (data) =>
     {
         data.Add("parentId", parentId);
     }, level));
 }
Example #11
0
 public int GetChildCount(Guid parentId, QueryLevel level)
 {
     return(this.GetCount <VirtualDirectory>("parent.Id=@parentId", (data) =>
     {
         data.Add("parentId", parentId);
     }, level));
 }
        public DynamicRoot Find(AggregateRootDefine define, object id, QueryLevel level)
        {
            var metadataType = define.MetadataType;
            var model        = DataModel.Create(metadataType);

            return(model.QuerySingle <DynamicRoot>(id, level));
        }
Example #13
0
 public Location FindBy(string markedCode, QueryLevel level)
 {
     return(this.QuerySingle <Location>("markedCode=@markedCode", (data) =>
     {
         data.Add("markedCode", markedCode);
     }, level));
 }
Example #14
0
 public IEnumerable <Location> FindChilds(long parentId, QueryLevel level)
 {
     return(this.Query <Location>("parent.Id=@parentId[order by sortNumber desc]", (data) =>
     {
         data.Add("parentId", parentId);
     }, level));
 }
 public Account FindByEmail(string email, QueryLevel level)
 {
     return(this.QuerySingle <Account>("email=@email", (arg) =>
     {
         arg.Add("email", email);
     }, level));
 }
        /// <summary>
        /// 在数据层中查找指定编号的数据,并加载到对象实例中
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <param name="id"></param>
        /// <param name="level"></param>
        /// <returns></returns>
        internal static T QuerySingle <T>(object id, QueryLevel level) where T : class, IEntityObject
        {
            var objectType = typeof(T);
            var model      = DataModel.Create(objectType);

            return(model.QuerySingle <T>(id, level));
        }
 public Account FindByFlag(string nameOrEmail, QueryLevel level)
 {
     return(this.QuerySingle <Account>("email=@flag or name=@flag", (arg) =>
     {
         arg.Add("flag", nameOrEmail);
     }, level));
 }
 public Menu FindBy(string markedCode, QueryLevel level)
 {
     return(DataContext.Current.QuerySingle <Menu>("markedCode=@markedCode", (arg) =>
     {
         arg.Add("markedCode", markedCode);
     }, level));
 }
 public IEnumerable <Account> FindsByRole(Guid roleId, QueryLevel level)
 {
     return(this.Query <Account>("roles.id=@roleId", (arg) =>
     {
         arg.Add("roleId", roleId);
     }, level));
 }
Example #20
0
        /// <summary>
        /// 创建对象
        /// </summary>
        /// <param name="objectType"></param>
        /// <param name="data"></param>
        /// <returns></returns>
        private DomainObject CreateObject(Type objectType, DynamicData data, QueryLevel level)
        {
            DomainObject obj = null;

            if (this.IsDynamic)
            {
                if (data.IsEmpty())
                {
                    obj = (DomainObject)DomainObject.GetEmpty(this.ObjectType);
                }
                else
                {
                    obj = CreateObjectImpl(this.DynamicType, this.DynamicType.ObjectType, data, level);
                }
            }
            else
            {
                if (data.IsEmpty())
                {
                    obj = (DomainObject)DomainObject.GetEmpty(objectType);
                }
                else
                {
                    obj = CreateObjectImpl(objectType, objectType, data, level);
                }
            }
            return(obj);
        }
Example #21
0
        internal int GetCount(string expression, Action <DynamicData> fillArg, QueryLevel level)
        {
            //获取总数据数
            var exp = QueryCount.Create(this, expression, level);

            return(GetCount(exp, fillArg));
        }
Example #22
0
 public VirtualFile FindBy(string storeKey, QueryLevel level)
 {
     return(this.QuerySingle <VirtualFile>("storeKey=@storeKey", (data) =>
     {
         data.Add("storeKey", storeKey);
     }, level));
 }
Example #23
0
 public Permission FindByName(string name, QueryLevel level)
 {
     return(DataContext.Current.QuerySingle <Permission>("name=@name", (arg) =>
     {
         arg.Add("name", name);
     }, level));
 }
Example #24
0
 public void Execute(Action <DynamicData> fillArg, QueryLevel level)
 {
     UsingExpression((express) =>
     {
         DataContext.Current.Execute <T>(express, fillArg, level);
     });
 }
Example #25
0
 public Role FindByMarkedCode(string markedCode, QueryLevel level)
 {
     return(this.QuerySingle <Role>("markedCode=@markedCode", (arg) =>
     {
         arg.Add("markedCode", markedCode);
     }, level));
 }
 public Account FindByName(string name, QueryLevel level)
 {
     return(this.QuerySingle <Account>("name=@name", (arg) =>
     {
         arg.Add("name", name);
     }, level));
 }
 public QueryExpression(DataTable target, string expression, QueryLevel level)
 {
     this.Target     = target;
     this.Expression = expression;
     this.Definition = SqlDefinition.Create(this.Expression);
     this.Level      = level;
 }
Example #28
0
 public SNGenerator FindByMarkedCode(string markedCode, QueryLevel level)
 {
     return(DataContext.Current.QuerySingle <SNGenerator>("markedCode=@markedCode", (arg) =>
     {
         arg.Add("markedCode", markedCode);
     }, level));
 }
        private static string GetFromSqlByDerived(DataTable table, QueryLevel level, SqlDefinition exp)
        {
            var inheritedRoot = table.InheritedRoot;

            StringBuilder sql = new StringBuilder();

            sql.AppendFormat(" {0}{1}", SqlStatement.Qualifier(inheritedRoot.Name), GetLockCode(level)); //inheritedRoot记录了条目信息,所以一定会参与查询
            foreach (var derived in table.Deriveds)
            {
                if (!exp.ContainsExceptId(derived))
                {
                    continue;
                }


                if (table.Type == DataTableType.AggregateRoot)
                {
                    sql.AppendFormat(" inner join {0} on {1}.Id={0}.Id",
                                     SqlStatement.Qualifier(derived.Name), SqlStatement.Qualifier(inheritedRoot.Name));
                }
                else
                {
                    sql.AppendFormat(" inner join {0} on {1}.Id={0}.Id and {1}.{2}={0}.{2}",
                                     SqlStatement.Qualifier(derived.Name)
                                     , SqlStatement.Qualifier(inheritedRoot.Name)
                                     , SqlStatement.Qualifier(table.Root.TableIdName));
                }
            }
            return(sql.ToString());
        }
        private static string GetDerivedTableSql(DataTable table, QueryLevel level)
        {
            var inheritedRoot = table.InheritedRoot;

            StringBuilder sql = new StringBuilder();

            sql.Append("select ");
            sql.Append(GetChainRootSelectFieldsSql(table, SqlDefinition.All));
            sql.Length--;
            sql.AppendLine();
            sql.AppendFormat(" from {0}{1}", SqlStatement.Qualifier(inheritedRoot.Name), GetLockCode(level));
            foreach (var derived in table.Deriveds)
            {
                if (table.Type == DataTableType.AggregateRoot)
                {
                    sql.AppendFormat(" inner join {0} on {1}.Id={0}.Id",
                                     SqlStatement.Qualifier(derived.Name), SqlStatement.Qualifier(inheritedRoot.Name));
                }
                else
                {
                    sql.AppendFormat(" inner join {0} on {1}.Id={0}.Id and {1}.{2}={0}.{2}",
                                     SqlStatement.Qualifier(derived.Name),
                                     SqlStatement.Qualifier(inheritedRoot.Name),
                                     SqlStatement.Qualifier(table.Root.TableIdName));
                }
            }
            return(sql.ToString());
        }
Example #31
0
 public CFindIOD(QueryLevel level)
 {
     QueryLevel = level;
     SOPInstanceUID = string.Empty;
 }