コード例 #1
0
ファイル: LinqCommandFactory.cs プロジェクト: radtek/vita
 public static SpecialLinqCommand CreateCheckAnyChildRecords(EntityKeyInfo childKey, EntityRecord record)
 {
     childKey.SqlCacheKey_ChildExists = childKey.SqlCacheKey_ChildExists ??
                                        SqlCacheKeyBuilder.BuildSpecialSelectKey(Tag_ExistsByKey, childKey.Entity.Name,
                                                                                 childKey.Name, LockType.None, null);
     return(new SpecialLinqCommand(record.Session, childKey.SqlCacheKey_ChildExists, childKey,
                                   LockType.None, null, record.PrimaryKey.Values, Setup_CheckChildExists));
 }
コード例 #2
0
ファイル: LinqCommandFactory.cs プロジェクト: radtek/vita
        public static SpecialLinqCommand CreateSelectByKeyValueArray(EntitySession session, EntityKeyInfo key,
                                                                     List <EntityKeyMemberInfo> orderBy, IList keyValues)
        {
            var sqlCacheKey = SqlCacheKeyBuilder.BuildSpecialSelectKey(Tag_SelectByKeyArray, key.Entity.Name, key.Name, LockType.None, orderBy);
            // build the command
            var paramValues = new object[] { keyValues };

            return(new SpecialLinqCommand(session, sqlCacheKey, key, LockType.None, orderBy, paramValues, Setup_SelectByKeyValueArray));
        }
コード例 #3
0
ファイル: LinqCommandFactory.cs プロジェクト: radtek/vita
        public static SpecialLinqCommand CreateSelectByKeyForListPropertyManyToMany(EntitySession session,
                                                                                    ChildEntityListInfo listInfo, object[] keyValues)
        {
            Util.Check(listInfo.RelationType == EntityRelationType.ManyToMany, "Fatal: expected many-to-many list.");
            var fromKey = listInfo.ParentRefMember.ReferenceInfo.FromKey;

            listInfo.SqlCacheKey_SelectChildRecs = listInfo.SqlCacheKey_SelectChildRecs ??
                                                   SqlCacheKeyBuilder.BuildSpecialSelectKey(Tag_SelectByKeyListPropertyManyToMany, fromKey.Entity.Name, fromKey.Name, LockType.None, null);
            return(new SpecialLinqCommand(session, listInfo.SqlCacheKey_SelectChildRecs,
                                          listInfo, listInfo.OrderBy, keyValues, Setup_SelectManyToMany));
        }
コード例 #4
0
ファイル: LinqCommandFactory.cs プロジェクト: radtek/vita
        public static SpecialLinqCommand CreateSelectByKeyArrayForListPropertyManyToOne(EntitySession session,
                                                                                        ChildEntityListInfo listInfo, IList keyValues)
        {
            Util.Check(listInfo.RelationType == EntityRelationType.ManyToOne, "Fatal: expected many-to-one list.");
            var fromKey = listInfo.ParentRefMember.ReferenceInfo.FromKey;

            listInfo.SqlCacheKey_SelectChildRecsForInclude = listInfo.SqlCacheKey_SelectChildRecsForInclude ??
                                                             SqlCacheKeyBuilder.BuildSpecialSelectKey(Tag_SelectByKeyArrayListPropertyManyToOne, fromKey.Entity.Name, fromKey.Name, LockType.None, null);
            // it is simply select-by-key-array command
            var orderBy     = fromKey.ExpandedKeyMembers.Merge(listInfo.OrderBy);
            var paramValues = new object[] { keyValues };

            return(new SpecialLinqCommand(session, listInfo.SqlCacheKey_SelectChildRecsForInclude,
                                          fromKey, LockType.None, orderBy, paramValues, Setup_SelectByKeyValueArray));
        }
コード例 #5
0
ファイル: LinqCommandFactory.cs プロジェクト: radtek/vita
        // for special linq commands: to avoid regenerating sql cache key we 'cache' it inside Key or ListInfo meta objects

        public static SpecialLinqCommand CreateSelectByPrimaryKey(EntitySession session, EntityKeyInfo key, LockType lockType, object[] keyValues)
        {
            // get sql cache key - we cache it inside KeyInfo only for no-lock queries
            string sqlCacheKey;

            if (lockType == LockType.None)
            {
                sqlCacheKey = key.SqlCacheKey_SelectByPkNoLock = key.SqlCacheKey_SelectByPkNoLock ??
                                                                 SqlCacheKeyBuilder.BuildSpecialSelectKey(Tag_SelectByPk, key.Entity.Name, key.Name, LockType.None, null);
            }
            else
            {
                sqlCacheKey = SqlCacheKeyBuilder.BuildSpecialSelectKey(Tag_SelectByPk, key.Entity.Name, key.Name, lockType, null);
            }
            // build the command
            return(new SpecialLinqCommand(session, sqlCacheKey, key, lockType, null,
                                          keyValues, Setup_SelectByKey));
        }