public VirtualDisk FindBy(string markedCode, QueryLevel level) { return(this.QuerySingle <VirtualDisk>("markedCode=@markedCode", (data) => { data.Add("markedCode", markedCode); }, level)); }
public IEnumerable <Role> FindRoles(IEnumerable <Guid> ids, QueryLevel level) { return(DataContext.Current.Query <Role>("id in @ids", (arg) => { arg.Add("ids", ids); }, level)); }
/// <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)); }
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)); }
/// <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); }
/// <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); }
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)); }
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)); }
public Location FindBy(string markedCode, QueryLevel level) { return(this.QuerySingle <Location>("markedCode=@markedCode", (data) => { data.Add("markedCode", markedCode); }, level)); }
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)); }
/// <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); }
internal int GetCount(string expression, Action <DynamicData> fillArg, QueryLevel level) { //获取总数据数 var exp = QueryCount.Create(this, expression, level); return(GetCount(exp, fillArg)); }
public VirtualFile FindBy(string storeKey, QueryLevel level) { return(this.QuerySingle <VirtualFile>("storeKey=@storeKey", (data) => { data.Add("storeKey", storeKey); }, level)); }
public Permission FindByName(string name, QueryLevel level) { return(DataContext.Current.QuerySingle <Permission>("name=@name", (arg) => { arg.Add("name", name); }, level)); }
public void Execute(Action <DynamicData> fillArg, QueryLevel level) { UsingExpression((express) => { DataContext.Current.Execute <T>(express, fillArg, level); }); }
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; }
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()); }
public CFindIOD(QueryLevel level) { QueryLevel = level; SOPInstanceUID = string.Empty; }