public Teacher(string name, string surname) : base()
 {
     _students = new ManyToMany <Teacher, Student>();
     Name      = name;
     Surname   = surname;
     InMemoryRepository <Teacher> .GetInstance().Save(this);
 }
        public IActionResult UNRSVP(int WeddingID)
        {
            if (HttpContext.Session.GetInt32("UserID") == null)
            {
                return(RedirectToAction("NotAuthorized"));
            }
            // Get the Current Wedding
            Wedding wedding = _context.Weddings
                              .Include(w => w.Guests)
                              .ThenInclude(g => g.User)
                              .FirstOrDefault(w => w.WeddingID == WeddingID);
            // Get the current User.
            User CurrUser = _context.Users
                            .FirstOrDefault(u => u.UserID == (int)HttpContext.Session.GetInt32("UserID"));

            // Get the User Association Object
            ManyToMany PulledUser = _context.Associations
                                    .Include(an => an.Wedding)
                                    .Include(an => an.User)
                                    .Where(an => an.Wedding == wedding)
                                    .FirstOrDefault(an => an.User == CurrUser);

            // Add the new Association to the list
            if (PulledUser != null)
            {
                _context.Remove(PulledUser);
                _context.SaveChanges();
            }
            else
            {
                Console.WriteLine("--------------------Already RSVP'd!--------------------");
            }
            // Redirect from a successful post request
            return(RedirectToAction("Dashboard"));
        }
Пример #3
0
 public TestBook(string title, ManyToMany many)
 {
     Title = title;
     _many = new HashSet <ManyToMany> {
         many
     };
 }
Пример #4
0
        /// <summary>
        /// Creates a many to many object
        /// </summary>
        /// <typeparam name="DataType">Data type</typeparam>
        /// <param name="Expression">Expression</param>
        /// <returns>The many to many object</returns>
        public IManyToMany <ClassType, DataType> ManyToMany <DataType>(Expression <Func <ClassType, IEnumerable <DataType> > > Expression) where DataType : class, new()
        {
            Setup();
            ManyToMany <ClassType, DataType> Return = new ManyToMany <ClassType, DataType>(Expression, this);

            Properties.Add(Return);
            return(Return);
        }
Пример #5
0
        public static Tuple <String, String> GetMTMTargetAndTable(PropertyInfo info)
        {
            ManyToMany attr = (ManyToMany)info.GetCustomAttribute(typeof(ManyToMany));

            if (attr == null)
            {
                return(null);
            }
            return(new Tuple <string, string>(attr.Target, attr.TableName));
        }
Пример #6
0
 private IEnumerable <IValueChange> ExtractRelationChanges(Attribute attribute)
 {
     Trace.Assert(attribute.Relation != null);
     return(attribute.Relation switch
     {
         OneToMany oneToMany => ExtractOneToManyChanges(oneToMany),
         ManyToOne manyToOne => ExtractManyToOneChanges(manyToOne),
         ManyToMany manyToMany => ExtractManyToManyChanges(manyToMany),
         _ => throw new NotSupportedException("Relation type is not supported")
     });
Пример #7
0
        public static string BuildManyToManyDdl(ManyToMany m, ITypeMapper typeMapper)
        {
            var ddlBuilder = new StringBuilder();

            ddlBuilder.AppendLine($"CREATE TABLE IF NOT EXISTS {m.TableName}(");
            ddlBuilder.AppendLine($"{ColumnSqlBuilder.BuildManyToManyDdl(m.ForeignKeyNear, typeMapper)},");
            ddlBuilder.AppendLine($"{ColumnSqlBuilder.BuildManyToManyDdl(m.ForeignKeyFar, typeMapper)}");
            ddlBuilder.Append(")");
            return(ddlBuilder.ToString());
        }
        /// <summary>
        /// Creates a many to many object
        /// </summary>
        /// <typeparam name="DataType">Data type</typeparam>
        /// <param name="Expression">Expression</param>
        /// <returns>The many to many object</returns>
        public ManyToMany <ClassType, DataType> ManyToMany <DataType>(System.Linq.Expressions.Expression <Func <ClassType, IEnumerable <DataType> > > Expression)
            where DataType : class
        {
            if (Expression == null)
            {
                throw new ArgumentNullException(nameof(Expression));
            }
            var ReturnValue = new ManyToMany <ClassType, DataType>(Expression, this);

            Properties.Add(ReturnValue);
            return(ReturnValue);
        }
        public IHttpActionResult AddInterest(ManyToMany m)
        {
            var accountService = new AccountService();
            var sports         = accountService.AddInterest(m.id1, m.id2);

            if (sports == null)
            {
                return(NotFound());
            }

            return(Ok(sports));
        }
Пример #10
0
        public Result <float[][]> TryCalculateWeight(Profile profile, RouterPoint[] sources, RouterPoint[] targets, ISet <int> invalidSources, ISet <int> invalidTargets)
        {
            if (!this._db.Supports(profile))
            {
                return(new Result <float[][]>("Routing profile is not supported.", (Func <string, Exception>)(message => new Exception(message))));
            }
            Func <ushort, Factor> getFactor = this.GetGetFactor(profile);
            DirectedMetaGraph     contracted;

            float[][] weights;
            if (this._db.TryGetContracted(profile, out contracted))
            {
                ManyToManyBidirectionalDykstra bidirectionalDykstra = new ManyToManyBidirectionalDykstra(this._db, profile, sources, targets);
                bidirectionalDykstra.Run();
                if (!bidirectionalDykstra.HasSucceeded)
                {
                    return(new Result <float[][]>(bidirectionalDykstra.ErrorMessage, (Func <string, Exception>)(message => (Exception) new RouteNotFoundException(message))));
                }
                weights = bidirectionalDykstra.Weights;
            }
            else
            {
                ManyToMany manyToMany = new ManyToMany(this._db, getFactor, sources, targets, float.MaxValue);
                manyToMany.Run();
                if (!manyToMany.HasSucceeded)
                {
                    return(new Result <float[][]>(manyToMany.ErrorMessage, (Func <string, Exception>)(message => (Exception) new RouteNotFoundException(message))));
                }
                weights = manyToMany.Weights;
            }
            int[] numArray = new int[targets.Length];
            for (int index1 = 0; index1 < weights.Length; ++index1)
            {
                int num = 0;
                for (int index2 = 0; index2 < weights[index1].Length; ++index2)
                {
                    if (index2 != index1 && (double)weights[index1][index2] == 3.40282346638529E+38)
                    {
                        ++num;
                        ++numArray[index2];
                        if (numArray[index2] > (sources.Length - 1) / 2)
                        {
                            invalidTargets.Add(index2);
                        }
                    }
                }
                if (num > (targets.Length - 1) / 2)
                {
                    invalidSources.Add(index1);
                }
            }
            return(new Result <float[][]>(weights));
        }
Пример #11
0
        /// <summary>
        /// Sets a property as a many to many type.
        /// </summary>
        /// <typeparam name="TDataType">The type of the data type.</typeparam>
        /// <param name="expression">Expression pointing to the property</param>
        /// <returns>The many to many object</returns>
        public ManyToMany <TClassType, TDataType> ManyToMany <TDataType>(System.Linq.Expressions.Expression <Func <TClassType, IList <TDataType> > > expression)
            where TDataType : class
        {
            if (expression is null)
            {
                throw new ArgumentNullException(nameof(expression));
            }

            var ReturnValue = new ManyToMany <TClassType, TDataType>(expression, this);

            ManyToManyProperties.Add(ReturnValue);
            return(ReturnValue);
        }
Пример #12
0
            public ManyToManyScorer Add <TF, TMM, TfID>(
                string formFieldName,
                string viewDataMultiSelectListKey,
                Func <IRepository <TEntity>, IReadOnlyCollection <TF> > getOptions,

                Expression <Func <TEntity, ICollection <TMM> > > getTmmExpression,

                Func <TMM, TfID> getTmmTfId,
                Func <TMM, TKey> getTmmTKey,
                Func <TF, TfID> getTfId,
                string multiSelectListOptionValuePropertyName,
                string multiSelectListOptionTextPropertyName,

                Func <TEntity, TF, TMM> construct,
                Func <string, TfID> toId = null
                ) where TF : class where TMM : class
            {
                Func <TMM, TMM, bool> equalsById = (e1, e2) => getTmmTfId(e1).Equals(getTmmTfId(e2));

                Action <Action <string, object>, IReadOnlyCollection <TF>, IEnumerable <TfID> > addViewData2 =
                    (addViewData, options, selectedIds) =>
                    addViewData(viewDataMultiSelectListKey,
                                new MultiSelectList(options, multiSelectListOptionValuePropertyName, multiSelectListOptionTextPropertyName, selectedIds.ToList()));

                var getTmm           = getTmmExpression.Compile();
                var memberExpression = (MemberExpression)getTmmExpression.Body;
                var setTmm           = MemberExpressionExtensions.CompileSetPropertyCovariance <TEntity, IEnumerable <TMM> >(memberExpression);

                Expression <Func <TEntity, IEnumerable <TMM> > > getRelationAsEnumerable = getTmmExpression.ContravarianceToIEnumerable();

                var manyToMany = new ManyToMany <TEntity, TF, TMM, TfID, IRepository <TEntity>, IBatch <TEntity> >(
                    formFieldName, addViewData2, getOptions,
                    (repository, batch, entity, selected) =>
                {
                    var oldRelations = new List <TMM>();
                    setTmm(entity, oldRelations);
                    batch.ModifyRelated(entity, oldRelations, selected, equalsById);
                },
                    (repository, batch, entity, selected) =>
                {
                    repository.LoadCollection(entity, getRelationAsEnumerable);
                    var oldRelations = getTmm(entity);
                    batch.ModifyRelated(entity, oldRelations, selected, equalsById);
                },
                    getTmmExpression.Compile(),
                    getTmmTfId, getTfId, construct, toId);

                manyToManyDictionary.Add(formFieldName, manyToMany);
                return(this);
            }
Пример #13
0
        public Result <Route[][]> TryCalculate(Profile profile, RouterPoint[] sources, RouterPoint[] targets, ISet <int> invalidSources, ISet <int> invalidTargets)
        {
            if (!this._db.Supports(profile))
            {
                return(new Result <Route[][]>("Routing profile is not supported.", (Func <string, Exception>)(message => new Exception(message))));
            }
            Func <ushort, Factor> getFactor = this.GetGetFactor(profile);
            DirectedMetaGraph     contracted;

            if (this._db.TryGetContracted(profile, out contracted))
            {
                Log.TraceEvent("Router", TraceEventType.Warning, "Many to many route calculations are not possible yet using contracted algorithms.");
            }
            ManyToMany manyToMany = new ManyToMany(this._db, getFactor, sources, targets, float.MaxValue);

            manyToMany.Run();
            if (!manyToMany.HasSucceeded)
            {
                return(new Result <Route[][]>(manyToMany.ErrorMessage, (Func <string, Exception>)(message => (Exception) new RouteNotFoundException(message))));
            }
            Route[][]   result1  = new Route[sources.Length][];
            List <uint> uintList = new List <uint>();

            for (int source = 0; source < sources.Length; ++source)
            {
                result1[source] = new Route[targets.Length];
                for (int target = 0; target < targets.Length; ++target)
                {
                    Path path = manyToMany.GetPath(source, target);
                    if (path != null)
                    {
                        uintList.Clear();
                        path.AddToList(uintList);
                        Result <Route> result2 = this.BuildRoute(profile, sources[source], targets[target], uintList);
                        if (result2.IsError)
                        {
                            return(result2.ConvertError <Route[][]>());
                        }
                        result1[source][target] = result2.Value;
                    }
                }
            }
            return(new Result <Route[][]>(result1));
        }
        public IActionResult CreateWedding(Wedding wedding)
        {
            if (HttpContext.Session.GetInt32("UserID") == null)
            {
                return(RedirectToAction("NotAuthorized"));
            }
            if (ModelState.IsValid)
            {
                wedding.Owner = _context.Users
                                .FirstOrDefault(u => u.UserID == (int)HttpContext.Session.GetInt32("UserID"));
                wedding.CreatedAt = DateTime.Now;
                wedding.UpdatedAt = DateTime.Now;
                _context.Weddings.Add(wedding);
                // Create a dummy Association object
                ManyToMany PulledUser = _context.Associations
                                        .Include(an => an.Wedding)
                                        .Include(an => an.User)
                                        .Where(an => an.Wedding == wedding)
                                        .FirstOrDefault(an => an.User == wedding.Owner);

                // Add the new Association to the list
                if (PulledUser == null)
                {
                    ManyToMany AddUser = new ManyToMany()
                    {
                        Wedding = wedding, WeddingId = wedding.WeddingID, User = wedding.Owner, UserId = wedding.Owner.UserID
                    };
                    _context.Add(AddUser);
                    _context.SaveChanges();
                }
                else
                {
                    Console.WriteLine("--------------------Already RSVP'd!--------------------");
                }
                // Redirect from a successful post request
                return(RedirectToAction("Dashboard"));
            }
            else
            {
                Console.WriteLine("----------------------Action Aborted----------------------");
                return(View("PlanWedding", wedding));
            }
        }
Пример #15
0
        private List <TestBook> GetLinkEntities()
        {
            var many1   = new ManyToMany();
            var many2   = new ManyToMany();
            var book1   = new TestBook(many1);
            var book2   = new TestBook(many2);
            var author1 = new TestAuthor {
                TestAuthorId = 1
            };

            many1.SetBookAuthor(book1, author1);
            many2.SetBookAuthor(book2, author1);

            author1.Many = new List <ManyToMany> {
                many1, many2
            };

            return(new List <TestBook> {
                book1, book2
            });
        }
Пример #16
0
        private ICollection <T> LoadManyToMany <T>(object entityObj, ref ICollection <T> loadTo, string propertyName,
                                                   ManyToMany relation)
        {
            var propAttr    = _entity.Attributes[propertyName];
            var otherEntity = _context.Schema.EntityTypeMap[typeof(T)];

            var thisEntity    = _context.Schema.EntityTypeMap[typeof(T)];
            var betweenEntity = relation.BetweenEntity;
            //student.id
            var otherEntityPkAttr = relation.ToKeyAttribute;
            //fk_student
            var otherEntityFkAttr = relation.ReferencedToAttribute;

            //Students
            var fromEntityAttribute = relation.FromEntityAttribute;

            var pk = relation.FromKeyAttribute.InvokeGetter(entityObj);

            var query = new SelectQueryBuilder(_context)
                        .FromTable <T>(thisEntity.TableName)
                        .Join(betweenEntity, otherEntityPkAttr, otherEntityFkAttr)
                        .Select(otherEntity.Attributes.Values
                                .Where(attr => !attr.IsEntityType)
                                .Select(attr => attr.DataBaseColumn))
                        .Where(new WhereSqlFragment(
                                   BinaryExpression.Eq(new Accessor
            {
                PropertyName = relation.ReferencedFromAttribute.DataBaseColumn,
                TableName    = betweenEntity.TableName
            }, Value.FromAttr(pk, relation.FromKeyAttribute))))
                        .Build();

            var loaded = _context.Connection.Select(query).ToList();

            loadTo = loaded;
            _entry.ReplaceRelatedKeys(propAttr, loaded.Select(obj =>
                                                              otherEntity.PrimaryKeyAttribute.InvokeGetter(obj)).ToList());
            _attributeGenerations[propertyName] = _context.ChangeTracker.Generation;
            return(loaded);
        }
Пример #17
0
 public static List <Column> BuildInterimColumns(ManyToMany m, Type from, Type to, ITypeMapper typeMapper)
 {
     return(new List <Column>()
     {
         new Column(
             m.ForeignKeyNear,
             new Fk(from),
             new HashSet <Constraint>(),
             null,
             new OrmDbType(typeMapper.GetForeignKeyType(), PreparedStatementTypeMapper.Map(from)),
             true
             ),
         new Column(
             m.ForeignKeyFar,
             new Fk(to),
             new HashSet <Constraint>(),
             null,
             new OrmDbType(typeMapper.GetForeignKeyType(), PreparedStatementTypeMapper.Map(from)),
             true
             )
     });
 }
Пример #18
0
        public void TestWithinOneEdge()
        {
            // build graph.
            var routerDb = new RouterDb();

            routerDb.AddSupportedVehicle(VehicleMock.Car());
            routerDb.Network.AddVertex(0, 0, 0);
            routerDb.Network.AddVertex(1, 0, 0);
            routerDb.Network.AddEdge(0, 1, new Itinero.Data.Network.Edges.EdgeData()
            {
                Distance = 100,
                Profile  = 0,
                MetaId   = 0
            });

            // run algorithm.
            var algorithm = new ManyToMany(new Router(routerDb), VehicleMock.Car().Fastest(), (x) => new uint[0][],
                                           new RouterPoint[] { new RouterPoint(0, 0, 0, ushort.MaxValue / 10) },
                                           new RouterPoint[] { new RouterPoint(1, 1, 0, ushort.MaxValue / 10 * 9) }, float.MaxValue);

            algorithm.Run();

            Assert.IsTrue(algorithm.HasRun);
            Assert.IsTrue(algorithm.HasSucceeded);

            var path = algorithm.GetPath(0, 0);

            Assert.IsNotNull(path);
            Assert.AreEqual(Constants.NO_VERTEX, path.Vertex);
            Assert.AreEqual(VehicleMock.Car().Fastest().FactorAndSpeed(null).Value * 80, path.Weight, 0.01);
            path = path.From;
            Assert.IsNotNull(path);
            Assert.AreEqual(Constants.NO_VERTEX, path.Vertex);
            Assert.AreEqual(0, path.Weight);
            path = path.From;
            Assert.IsNull(path);
        }
Пример #19
0
        public void TestOneEdge()
        {
            // build graph.
            var routerDb = new RouterDb();

            routerDb.AddSupportedProfile(MockProfile.CarMock());
            routerDb.Network.AddVertex(0, 0, 0);
            routerDb.Network.AddVertex(1, 0, 0);
            routerDb.Network.AddEdge(0, 1, new Itinero.Data.Network.Edges.EdgeData()
            {
                Distance = 100,
                Profile  = 0,
                MetaId   = 0
            });

            // run algorithm.
            var algorithm = new ManyToMany(new Router(routerDb), MockProfile.CarMock(),
                                           new RouterPoint[] { new RouterPoint(0, 0, 0, 0) },
                                           new RouterPoint[] { new RouterPoint(1, 1, 0, ushort.MaxValue) }, float.MaxValue);

            algorithm.Run();

            Assert.IsTrue(algorithm.HasRun);
            Assert.IsTrue(algorithm.HasSucceeded);

            var path = algorithm.GetPath(0, 0);

            Assert.IsNotNull(path);
            Assert.AreEqual(1, path.Vertex);
            Assert.AreEqual(MockProfile.CarMock().Factor(null).Value * 100, path.Weight);
            path = path.From;
            Assert.IsNotNull(path);
            Assert.AreEqual(0, path.Vertex);
            Assert.AreEqual(0, path.Weight);
            path = path.From;
            Assert.IsNull(path);
        }
Пример #20
0
        public static void Queryable2()
        {
            var list4 = Db.Queryable <ABMapping>()
                        .Mapper(it => it.A, it => it.AId)
                        .Where(it => it.A.Name == "a")
                        .ToList();


            var list5 = Db.Queryable <ABMapping>()
                        .Mapper(it => it.A, it => it.AId, it => it.A.Id)
                        .Where(it => it.A.Name == "a")
                        .ToList();


            var list3 = Db.Queryable <Order>()
                        .Mapper(it => it.Items, it => it.Items.First().OrderId)
                        .Where(it => it.Items.Count() > 0)
                        .ToList();

            var list6 = Db.Queryable <Order>()
                        .Mapper(it => it.Items, it => it.Items.First().OrderId)
                        .Where(it => it.Items.Any())
                        .ToList();
            var list7 = Db.Queryable <Order>()
                        .Mapper(it => it.Items, it => it.Items.First().OrderId)
                        .Where(it => it.Items.Any(y => y.ItemId == 1))
                        .ToList();

            var sql = Db.Queryable <Order>().AS("[order]").ToList();

            var sql1 = Db.Queryable <Order, OrderItem, Custom>((o, i, c) => new JoinQueryInfos(
                                                                   JoinType.Left, o.Id == i.OrderId,
                                                                   JoinType.Left, c.Id == o.CustomId
                                                                   ))
                       .AS("[aa]")
                       .AS <OrderItem>("[xx]")
                       .AS <Custom>("[yy]")
                       .Select <ViewOrder>().ToSql().Key;

            if (!sql1.Contains("[aa]") || !sql1.Contains("[xx]") || !sql1.Contains("[yy]"))
            {
                throw new Exception("unit queryable2 ");
            }
            var sql2 = Db.Queryable <OrderItem>().AS("[zz]").ToSql().Key;

            if (sql2 != "SELECT [ItemId],[OrderId],[Price],[CreateTime] FROM [zz] ")
            {
                throw new Exception("unit queryable2 ");
            }
            Db.Queryable <Order, OrderItem, Custom>((o, i, c) => new JoinQueryInfos(
                                                        JoinType.Left, o.Id == i.OrderId,
                                                        JoinType.Left, c.Id == o.CustomId
                                                        ))
            .AS("[order]")
            .AS <OrderItem>("[orderdetail]")
            .AS <Custom>("[custom]")
            .Select <ViewOrder>().ToList();

            Db.Queryable <object>().AS("[order]").Select("*").ToList();

            var qu1 = Db.Queryable <Order>().Select(it => new
            {
                id = it.Id
            }).MergeTable().Select <Order>();
            var qu2 = Db.Queryable <Order>().Select(it => new
            {
                id   = it.Id,
                name = it.Name
            }).MergeTable().Select <Order>();
            var list = Db.Queryable(qu1, qu2, JoinType.Left, (x, y) => x.Id == y.Id).Select((x, y) => new
            {
                id1  = x.Id,
                name = y.Name
            }).ToList();

            var qu3 = Db.Queryable <Order>().Select(it => new
            {
                id   = it.Id,
                name = it.Name
            }).MergeTable()
                      .Where(it => 2 > it.id).Select(it => new Order()
            {
                Id = SqlFunc.IIF(2 > it.id, 1, 2)
            }).ToList();


            var qu4 = Db.Queryable <Order>().OrderBy(it => it.Id + it.Id).ToList();

            var list11 = Db.Queryable <A>()

                         .ToList();

            var list8 = Db.Queryable <A>()
                        .Mapper <A, B, ABMapping>(it => ManyToMany.Config(it.AId, it.BId))
                        .ToList();

            Db.CodeFirst.InitTables <ABMap, TableA, TableB>();
            Db.DbMaintenance.TruncateTable("TableA");
            Db.DbMaintenance.TruncateTable("Tableb");
            Db.DbMaintenance.TruncateTable("ABMap");
            Db.Insertable(new TableA()
            {
                id = 1, Name = "A1"
            }).ExecuteCommand();
            Db.Insertable(new TableA()
            {
                id = 2, Name = "A1"
            }).ExecuteCommand();
            Db.Insertable(new TableB()
            {
                id = 1, Name = "B1"
            }).ExecuteCommand();
            Db.Insertable(new TableB()
            {
                id = 2, Name = "B2"
            }).ExecuteCommand();
            Db.Insertable(new ABMap()
            {
                Aid = 1, Bid = 1
            }).ExecuteCommand();
            Db.Insertable(new ABMap()
            {
                Aid = 1, Bid = 2
            }).ExecuteCommand();
            Db.Insertable(new ABMap()
            {
                Aid = 2, Bid = 1
            }).ExecuteCommand();
            Db.Insertable(new ABMap()
            {
                Aid = 2, Bid = 2
            }).ExecuteCommand();
            var list9 = Db.Queryable <TableA>()
                        .Mapper <TableA, TableB, ABMap>(it => ManyToMany.Config(it.Aid, it.Bid)).ToList();

            var _db = Db;

            int[] communities = { 1, 2, 3, 4, 5 };

            _db.QueryFilter.Add(new TableFilterItem <Dat_WorkBill>(it => communities.Contains(it.CommunityID ?? 0)));

            Db.CodeFirst.InitTables <Dat_WorkBill, Base_Community>();


            var rlt = _db.Queryable(_db.Queryable <Dat_WorkBill>(), _db.Queryable <Base_Community>(),

                                    JoinType.Left, (bill, com) => bill.CommunityID == com.CommunityID)

                      .Where((bill, com) => com.IsEnable == 1)


                      .Select((bill, com) => new

            {
                ID = bill.WorkBillID,

                Name = com.CommunityName
            })

                      .ToList();


            var sql12 = Db.Queryable <Order, OrderItem, Custom>((o, i, c) => true)
                        .AS("[aa]")
                        .AS <OrderItem>("[xx]")
                        .AS <Custom>("[yy]").ToSql();



            var list12 = Db.Queryable <Order>()
                         .Select(it => new
            {
                name       = it.Name,
                customName = SqlFunc.MappingColumn(default(string), " (select top 1 id from [Order] ) ")
            }).ToList();

            var p1     = "1";
            var p2     = "2";
            var list13 = Db.Queryable <Order>()
                         .Select(it => new
            {
                name       = it.Name,
                customName = SqlFunc.MappingColumn(default(string), $" (select top 1 id from [Order] where id={p1} or id={p2} ) ")
            }).ToList();

            int id = 0;

            Db.Queryable(Db.Queryable <Order>().Where(it => it.Id == 1)).Where(it => it.Id == 1).ToList();
            _db.QueryFilter.Clear();


            Db.CodeFirst.InitTables <UnitEnumTest>();
            Db.Insertable(new UnitEnumTest()
            {
                type = null
            }).ExecuteCommand();
            Db.Insertable(new UnitEnumTest()
            {
                type = DbType.MySql
            }).ExecuteCommand();
            var xx  = Db.Queryable <UnitEnumTest>().ToList();
            var xxx = Db.Storageable(new UnitEnumTest()
            {
                Name = "a",
                type = DbType.Sqlite
            }).WhereColumns(it => it.type).ToStorage();

            xxx.AsUpdateable.ExecuteCommand();

            var getOrderBy2 = Db
                              .Queryable <Order>()
                              .Select(it => new Order {
                Name = it.Name.Replace("0", "1")
            }).MergeTable().Select <Order>().Where(it => it.Name.Equals("2"))
                              .ToList();

            var list14 = Db.Queryable <Order, Order, Order>((o1, o2, o3) =>
                                                            new JoinQueryInfos(JoinType.Inner, o1.Id == o2.Id * 2, JoinType.Inner, o1.Id == o3.Id * 4)
                                                            )
                         .Select((o1, o2, o3) => new
            {
                id = o1.Id,
                x  = o1,
                x2 = o2,
                x3 = o3
            }).ToList();


            var list15 = Db.Queryable <Order, Order, Order>((o1, o2, o3) =>
                                                            new JoinQueryInfos(JoinType.Inner, o1.Id == o2.Id * 2, JoinType.Inner, o1.Id == o3.Id * 4)
                                                            )
                         .Select((o1, o2, o3) => new TestModel1
            {
                id = o1.Id.SelectAll(),
                x  = o1,
                x2 = o2,
                x3 = o3
            }).ToList();

            var list16 = Db.Queryable <Order>().OrderBy(it => it.CreateTime.ToString("yyyy-MM-dd")).Select(it => new { x = it.CreateTime.ToString("yyyy-MM-dd") }).ToList();

            Db.CodeFirst.InitTables <TB_ClientConfig, TB_AdminUser>();
            Db.Insertable(new TB_ClientConfig()
            {
                AlipayAppID        = "aa",
                AlipayPaymentOpen  = true,
                AlipayPrivateKey   = "a",
                AlipayPublicKey    = "",
                AlipayWithdrawOpen = true,
                CreateAdminUserID  = 1,
                CreateDateTime     = 11,
                Extension          = "a",
                ModifyAdminUserID  = 1,
                ModifyDateTime     = 1,
                Name                 = "a",
                WechatPayMchID       = "a",
                OpenWechatAppID      = "a",
                OpenWechatAppSecret  = "a",
                WechatMiniOriginalID = "b",
                WechatPayApiKey      = "a",
                WechatPayApiKeyV3    = "z"
            }).ExecuteReturnSnowflakeId();
            var list17 = Db.Queryable <TB_ClientConfig, TB_AdminUser, TB_AdminUser>((f, c, m) => new JoinQueryInfos(
                                                                                        JoinType.Left, f.CreateAdminUserID == c.ID,
                                                                                        JoinType.Left, f.ModifyAdminUserID == m.ID))
                         .OrderBy(f => f.CreateDateTime, OrderByType.Desc)
                         .Select((f, c, m) => new
            {
                f,
                CreateAdminUserName = c.Name,
                ModifyAdminUserName = m.Name
            }).ToList();

            var listxxxxxxxxxxx = Db.Queryable <Tree2, Tree2>((a, b) => new JoinQueryInfos(JoinType.Inner, a.ParentId == b.Id))
                                  .Select((a, b) => new {
                user       = a,
                parentUser = b
            })
                                  .ToList();

            var sql111 = Db.SqlQueryable <Order>("select 1 id ").ToSql().Key;
            var sql222 = Db.SqlQueryable <Order>("select 1 id ").Where(it => it.Id == 1).ToSql().Key;

            Check.Exception("select 1 id " != sql111, "unit query error");
            Check.Exception("SELECT t.* FROM  (select 1 id ) t   WHERE ( [Id] = @Id0 )" != sql222, "unit query error");

            var query5 = Db.Queryable <Order>()
                         .LeftJoin <Custom>((o, cus) => o.CustomId == cus.Id)

                         .Where((o) => o.Id > 0)
                         .Select((o, cus) => new VUOrder {
                Ixd = o.Id.SelectAll()
            })
                         .ToList();

            Check.Exception(query5.Any() && query5.First().Ixd == 0, "unit error");
        }
Пример #21
0
        public void TestThreeEdges()
        {
            // build graph.
            var routerDb = new RouterDb();

            routerDb.AddSupportedVehicle(VehicleMock.Car());
            routerDb.Network.AddVertex(0, 0, 0);
            routerDb.Network.AddVertex(1, 1, 1);
            routerDb.Network.AddVertex(2, 2, 2);
            routerDb.Network.AddEdge(0, 1, new Itinero.Data.Network.Edges.EdgeData()
            {
                Distance = 100,
                Profile  = 0,
                MetaId   = 0
            });
            routerDb.Network.AddEdge(1, 2, new Itinero.Data.Network.Edges.EdgeData()
            {
                Distance = 100,
                Profile  = 0,
                MetaId   = 0
            });
            routerDb.Network.AddEdge(2, 0, new Itinero.Data.Network.Edges.EdgeData()
            {
                Distance = 100,
                Profile  = 0,
                MetaId   = 0
            });

            // run algorithm (0, 1, 2)->(0, 1, 2).
            var algorithm = new ManyToMany(new Router(routerDb), VehicleMock.Car().Fastest(), (x) => new uint[0][],
                                           new RouterPoint[] {
                routerDb.Network.CreateRouterPointForVertex(0),
                routerDb.Network.CreateRouterPointForVertex(1),
                routerDb.Network.CreateRouterPointForVertex(2)
            },
                                           new RouterPoint[] {
                routerDb.Network.CreateRouterPointForVertex(0),
                routerDb.Network.CreateRouterPointForVertex(1),
                routerDb.Network.CreateRouterPointForVertex(2)
            }, float.MaxValue);

            algorithm.Run(); Assert.IsTrue(algorithm.HasRun);
            Assert.IsTrue(algorithm.HasSucceeded);

            var weights = algorithm.Weights;

            Assert.IsNotNull(weights);
            Assert.AreEqual(3, weights.Length);
            Assert.AreEqual(3, weights[0].Length);
            Assert.AreEqual(0, weights[0][0], 0.001);

            Assert.AreEqual(100 * VehicleMock.Car().Fastest().FactorAndSpeed(null).Value, weights[0][1], 0.001);
            Assert.AreEqual(100 * VehicleMock.Car().Fastest().FactorAndSpeed(null).Value, weights[0][2], 0.001);
            Assert.AreEqual(3, weights[1].Length);
            Assert.AreEqual(100 * VehicleMock.Car().Fastest().FactorAndSpeed(null).Value, weights[1][0], 0.001);
            Assert.AreEqual(0, weights[1][1], 0.001);
            Assert.AreEqual(100 * VehicleMock.Car().Fastest().FactorAndSpeed(null).Value, weights[1][2], 0.001);
            Assert.AreEqual(3, weights[2].Length);
            Assert.AreEqual(100 * VehicleMock.Car().Fastest().FactorAndSpeed(null).Value, weights[2][0], 0.001);
            Assert.AreEqual(100 * VehicleMock.Car().Fastest().FactorAndSpeed(null).Value, weights[2][1], 0.001);
            Assert.AreEqual(0, weights[2][2], 0.001);

            var path = algorithm.GetPath(0, 0);

            Assert.IsNotNull(path);
            Assert.AreEqual(0, path.Weight, 0.001);
            Assert.AreEqual(0, path.Vertex);
            path = path.From;
            Assert.IsNull(path);

            path = algorithm.GetPath(0, 1);
            Assert.IsNotNull(path);
            Assert.AreEqual(100 * VehicleMock.Car().Fastest().FactorAndSpeed(null).Value, path.Weight, 0.001);
            Assert.AreEqual(1, path.Vertex);
            path = path.From;
            Assert.IsNotNull(path);
            Assert.AreEqual(0, path.Weight, 0.001);
            Assert.AreEqual(0, path.Vertex);
            path = path.From;
            Assert.IsNull(path);

            path = algorithm.GetPath(0, 2);
            Assert.IsNotNull(path);
            Assert.AreEqual(100 * VehicleMock.Car().Fastest().FactorAndSpeed(null).Value, path.Weight, 0.001);
            Assert.AreEqual(2, path.Vertex);
            path = path.From;
            Assert.IsNotNull(path);
            Assert.AreEqual(0, path.Weight, 0.001);
            Assert.AreEqual(0, path.Vertex);
            path = path.From;
            Assert.IsNull(path);

            path = algorithm.GetPath(1, 0);
            Assert.IsNotNull(path);
            Assert.AreEqual(100 * VehicleMock.Car().Fastest().FactorAndSpeed(null).Value, path.Weight, 0.001);
            Assert.AreEqual(0, path.Vertex);
            path = path.From;
            Assert.IsNotNull(path);
            Assert.AreEqual(0, path.Weight, 0.001);
            Assert.AreEqual(1, path.Vertex);
            path = path.From;
            Assert.IsNull(path);

            path = algorithm.GetPath(1, 1);
            Assert.IsNotNull(path);
            Assert.AreEqual(0, path.Weight, 0.001);
            Assert.AreEqual(1, path.Vertex);
            path = path.From;
            Assert.IsNull(path);

            path = algorithm.GetPath(1, 2);
            Assert.IsNotNull(path);
            Assert.AreEqual(100 * VehicleMock.Car().Fastest().FactorAndSpeed(null).Value, path.Weight, 0.001);
            Assert.AreEqual(2, path.Vertex);
            path = path.From;
            Assert.IsNotNull(path);
            Assert.AreEqual(0, path.Weight, 0.001);
            Assert.AreEqual(1, path.Vertex);
            path = path.From;
            Assert.IsNull(path);

            path = algorithm.GetPath(2, 0);
            Assert.IsNotNull(path);
            Assert.AreEqual(100 * VehicleMock.Car().Fastest().FactorAndSpeed(null).Value, path.Weight, 0.001);
            Assert.AreEqual(0, path.Vertex);
            path = path.From;
            Assert.IsNotNull(path);
            Assert.AreEqual(0, path.Weight, 0.001);
            Assert.AreEqual(2, path.Vertex);
            path = path.From;
            Assert.IsNull(path);

            path = algorithm.GetPath(2, 1);
            Assert.IsNotNull(path);
            Assert.AreEqual(100 * VehicleMock.Car().Fastest().FactorAndSpeed(null).Value, path.Weight, 0.001);
            Assert.AreEqual(1, path.Vertex);
            path = path.From;
            Assert.IsNotNull(path);
            Assert.AreEqual(0, path.Weight, 0.001);
            Assert.AreEqual(2, path.Vertex);
            path = path.From;
            Assert.IsNull(path);

            path = algorithm.GetPath(2, 2);
            Assert.IsNotNull(path);
            Assert.AreEqual(0, path.Weight, 0.001);
            Assert.AreEqual(2, path.Vertex);
            path = path.From;
            Assert.IsNull(path);
        }
Пример #22
0
 public ManyToManyConstraintTo(ManyToMany manyToMany)
 {
     _manyToMany = manyToMany;
 }
Пример #23
0
        public static void Queryable()
        {
            var pageindex = 1;
            var pagesize  = 10;
            var total     = 0;
            var totalPage = 0;
            var list      = Db.Queryable <Order>().ToPageList(pageindex, pagesize, ref total, ref totalPage);

            //Db.CodeFirst.InitTables(typeof(CarType));
            //Db.Updateable<CarType>()
            //      .SetColumns(it => new CarType { State = SqlSugar.SqlFunc.IIF(it.State == true, false, true) }).Where(it => true)
            //   .ExecuteCommand();

            //Db.CodeFirst.InitTables(typeof(TestTree));
            //Db.DbMaintenance.TruncateTable<TestTree>();
            //Db.Ado.ExecuteCommand("insert testtree values(hierarchyid::GetRoot(),geography :: STGeomFromText ('POINT(55.9271035250276 -3.29431266523898)',4326),'name')");
            //var list2 = Db.Queryable<TestTree>().ToList();

            Db.CodeFirst.InitTables <UnitGuidTable>();
            Db.Queryable <UnitGuidTable>().Where(it => it.Id.HasValue).ToList();

            Db.Queryable <Order>().Where(it => SqlSugar.SqlFunc.Equals(it.CreateTime.Date, it.CreateTime.Date)).ToList();

            var sql = Db.Queryable <UnitSelectTest>().Select(it => new UnitSelectTest()
            {
                DcNull = it.Dc,
                Dc     = it.Int
            }).ToSql().Key;

            UValidate.Check(sql, "SELECT  [Dc] AS [DcNull] , [Int] AS [Dc]  FROM [UnitSelectTest]", "Queryable");

            sql = Db.Updateable <UnitSelectTest2>(new UnitSelectTest2()).ToSql().Key;
            UValidate.Check(sql, @"UPDATE [UnitSelectTest2]  SET
           [Dc]=@Dc,[IntNull]=@IntNull  WHERE [Int]=@Int", "Queryable");

            sql = Db.Queryable <Order>().IgnoreColumns(it => it.CreateTime).ToSql().Key;
            UValidate.Check(sql, "SELECT [Id],[Name],[Price],[CustomId] FROM [Order] ", "Queryable");
            sql = Db.Queryable <Order>().IgnoreColumns(it => new { it.Id, it.Name }).ToSql().Key;
            UValidate.Check(sql, "SELECT [Price],[CreateTime],[CustomId] FROM [Order] ", "Queryable");
            sql = Db.Queryable <Order>().IgnoreColumns("id").ToSql().Key;
            UValidate.Check(sql, "SELECT [Name],[Price],[CreateTime],[CustomId] FROM [Order] ", "Queryable");

            var cts   = IEnumerbleContains.Data();
            var list2 = Db.Queryable <Order>()
                        .Where(p => /*ids.*/ cts.Select(c => c.Id).Contains(p.Id)).ToList();

            var cts2  = IEnumerbleContains.Data().ToList();;
            var list3 = Db.Queryable <Order>()
                        .Where(p => /*ids.*/ cts2.Select(c => c.Id).Contains(p.Id)).ToList();


            var list4 = Db.Queryable <Order>()
                        .Where(p => new List <int> {
                1, 2, 3
            }.Where(b => b > 1).Contains(p.Id)).ToList();

            Db.CodeFirst.InitTables <UnitTest3>();
            var list5 = Db.Queryable <UnitTest3>().Where(it => SqlSugar.SqlFunc.ToString(it.Date.Value.Year) == "1").ToList();
            var list6 = Db.Queryable <UnitTest3>().Where(it => it.Date.Value.Year == 1).ToList();
            var list7 = Db.Queryable <UnitTest3>().Where(it => it.Date.Value.Date == DateTime.Now.Date).ToList();


            SaleOrder saleOrderInfo = new SaleOrder();

            Db.CodeFirst.InitTables <SaleOrder>();
            var result = Db.GetSimpleClient <SaleOrder>().Update(o => new SaleOrder()
            {
                OrderStatus = 1,
                CheckMan    = saleOrderInfo.CheckMan,
                CheckTime   = DateTime.Now
            }, o => o.OrderSn == saleOrderInfo.OrderSn && o.OrderStatus != 1);

            var ids   = Enumerable.Range(1, 11).ToList();
            var list8 = Db.Queryable <Order>().Where(it => SqlFunc.ContainsArrayUseSqlParameters(ids, it.Id)).ToList();

            var result2 = Db.Queryable <Unit_SYS_USER>().Where(o => o.XH == UserLoginInfo.XH).Select(o => o.XH).ToSql();

            var x = Db.Queryable <BoolTest1>().Select(it => new BoolTest2()
            {
                a = it.a
            }).ToSql();

            UValidate.Check(x.Key, "SELECT  [a] AS [a]  FROM [BoolTest1] ", "Queryable");
            x = Db.Queryable <BoolTest2>().Select(it => new BoolTest1()
            {
                a = it.a.Value
            }).ToSql();
            UValidate.Check(x.Key, "SELECT  [a] AS [a]  FROM [BoolTest2] ", "Queryable");

            var db = Db;

            db.CodeFirst.InitTables <UserInfo, UserIpRuleInfo>();
            db.Deleteable <UserInfo>().ExecuteCommand();
            db.Deleteable <UserIpRuleInfo>().ExecuteCommand();
            db.Insertable(new UserInfo()
            {
                Id       = 1,
                Password = "******",
                UserName = "******"
            }).ExecuteCommand();
            db.Insertable(new UserIpRuleInfo()
            {
                Addtime     = DateTime.Now,
                UserName    = "******",
                Id          = 11,
                UserId      = 1,
                Description = "xx",
                IpRange     = "1",
                RuleType    = 1
            }).ExecuteCommand();
            var vmList = db.Queryable <UserInfo, UserIpRuleInfo>(
                (m1, m2) => m1.Id == m2.UserId
                ).Where((m1, m2) => m1.Id > 0).Select((m1, m2) => new UserIpRuleInfo()
            {
                IpRange  = m2.IpRange,
                Addtime  = m2.Addtime,
                RuleType = m2.RuleType,
            }).ToList();

            if (string.IsNullOrEmpty(vmList.First().IpRange))
            {
                throw new Exception("Queryable");
            }

            Db.Insertable(new Order()
            {
                CreateTime = DateTime.Now, CustomId = 1, Name = "a", Price = 1
            }).ExecuteCommand();
            var sa = Db.SqlQueryable <Order>("SELECT * FroM [ORDER] where id in (@id) ");

            sa.AddParameters(new List <SugarParameter>()
            {
                new SugarParameter("id", new int[] { 1 })
            });
            int i      = 0;
            var salist = sa.ToPageList(1, 2, ref i);

            db.CodeFirst.InitTables <UnitBytes11>();
            db.Insertable(new UnitBytes11()
            {
                bytes = null, name = "a"
            }).ExecuteCommand();
            db.Insertable(new UnitBytes11()
            {
                bytes = new byte[] { 1, 2 }, name = "a"
            }).ExecuteCommand();
            var bytes = db.Queryable <UnitBytes11>().Select(it => new
            {
                b    = it.bytes,
                name = "a"
            }).ToList();

            var bytes2 = db.Queryable <UnitBytes11>().Select(it => new
            {
                b = it
            }).ToList();


            db.CodeFirst.InitTables <BoolTest1>();
            db.CodeFirst.InitTables <BoolTest2>();
            db.Queryable <BoolTest1>().Where(it => !it.a).ToList();
            var test01 = db.Queryable <SaleOrder>().GroupBy(it => new { it.CheckTime.Value.Date })
                         .Select(it => new { x = it.CheckTime.Value.Date }).ToList();
            var q1 = db.Queryable <BoolTest1>();
            var x1 = q1.Clone().AS("BoolTest11");
            var x2 = q1.Clone().AS("BoolTest12");
            var q2 = db.UnionAll(x1, x2).ToSql();

            if (!q2.Key.Contains("BoolTest11") || !q2.Key.Contains("BoolTest12"))
            {
                throw new Exception("unit query error");
            }

            db.Queryable <Order>().Where(it => SqlFunc.Round(it.Id, 2) == SqlFunc.Abs(it.Id)).ToList();
            db.Insertable(new Order()
            {
                CreateTime = Convert.ToDateTime("2021-1-1"), CustomId = 1, Name = "a", Price = 0
            }).ExecuteCommand();
            db.Insertable(new Order()
            {
                CreateTime = Convert.ToDateTime("2021-1-9"), CustomId = 1, Name = "a", Price = 0
            }).ExecuteCommand();
            db.Insertable(new Order()
            {
                CreateTime = Convert.ToDateTime("2021-9-11"), CustomId = 1, Name = "a", Price = 0
            }).ExecuteCommand();
            db.Insertable(new Order()
            {
                CreateTime = Convert.ToDateTime("2021-11-30"), CustomId = 1, Name = "a", Price = 0
            }).ExecuteCommand();
            var d1 = db.Queryable <Order>()
                     .Where(it => it.CreateTime.Day == 1 && it.CreateTime.Year == 2021)
                     .Select(it => it.CreateTime.ToString("yyyy-MM-dd")).ToList();

            Check.Exception(d1.Last() != "2021-01-01", "unit error");
            var d11 = db.Queryable <Order>()
                      .Where(it => it.CreateTime.Day == 9 && it.CreateTime.Year == 2021)
                      .Select(it => it.CreateTime.ToString("yyyy-MM-dd")).ToList();

            Check.Exception(d11.Last() != "2021-01-09", "unit error");
            var d111 = db.Queryable <Order>()
                       .Where(it => it.CreateTime.Day == 11 && it.CreateTime.Year == 2021)
                       .Select(it => it.CreateTime.ToString("yyyy-MM-dd")).ToList();

            Check.Exception(d111.Last() != "2021-09-11", "unit error");
            var d1111 = db.Queryable <Order>()
                        .Where(it => it.CreateTime.Day == 30 && it.CreateTime.Year == 2021)
                        .Select(it => it.CreateTime.ToString("yyyy-MM-dd")).ToList();

            Check.Exception(d1111.Last() != "2021-11-30", "unit error");


            var d11111 = db.Queryable <Order>()
                         .Where(it => it.CreateTime.ToString("yyyy-MM-dd") == "2021-11-30")
                         .Select(it => it.CreateTime.ToString("yyyy-MM-dd")).ToList();

            Check.Exception(d11111.Last() != "2021-11-30", "unit error");

            db.CodeFirst.InitTables <UnitEnumadfa>();
            db.Insertable(new UnitEnumadfa()).ExecuteCommand();
            db.Insertable(new UnitEnumadfa()
            {
                Type = DbType.Sqlite
            }).ExecuteCommand();
            var listEnum = db.Queryable <UnitEnumadfa>().ToList();

            var d111111 = db.Queryable <Order>()
                          .Where(it => it.Id == SqlFunc.IF(true).Return(1).End(0))
                          .ToList();
            var d1111111 = db.Queryable <Order>()
                           .Where(it => it.Id == SqlFunc.IF(it.Id > 0).Return(1).End(0))
                           .ToList();
            var d11111111 = db.Queryable <Order>()
                            .Where(it => it.Id == (it.Id > 0? (it.Id == 1?11:1):2))
                            .ToList();
            var d111111111 = db.Queryable <Order>()
                             .Where(it => it.Id == (it.Id > 0 ? (it.Id == 1 ? 11 : (it.Id == 2?2:1)) : 2))
                             .ToList();
            bool?bq            = true;
            var  d1111111111   = db.Queryable <BoolTest1>().Where(it => it.a.Equals(bq.Value)).ToArray();
            var  d11111111111  = db.Queryable <BoolTest1>().Where(it => SqlFunc.IIF(bq.Value, 1, 2) == 1).ToArray();
            var  d111111111111 = db.Queryable <BoolTest1>().Select(it => new { x = SqlFunc.IsNull(it.a, false) }).ToArray();

            db.CodeFirst.InitTables <SqlSugarDemo.UserEntity, SqlSugarDemo.RoleEntity, SqlSugarDemo.UserRoleEntity>();
            var data = new SqlSugarDemo.UserEntity()
            {
                CardNo                   = "",
                CompanyWX                = "",
                Credential               = "",
                EmailAccount             = "",
                EndDate                  = DateTime.Now,
                FailedLoginPwdCount      = 1,
                IsChangePassword         = true,
                IsReal                   = 1,
                LastLoginDate            = DateTime.Now,
                ManageAccount            = Guid.NewGuid(),
                ManageOrg                = Guid.NewGuid(),
                NickName                 = "",
                PhoneAccount             = "",
                RealName                 = "",
                VerificationLoginPwdDate = DateTime.Now,
                SafePhone                = "",
                Sex           = 1,
                StartDate     = DateTime.Now,
                StopLoginTime = DateTime.Now,
                UserAccount   = "",
                UserId        = Guid.NewGuid(),
                UserType      = 1
            };

            db.Insertable(data).ExecuteCommand();
            //var role = new SqlSugarDemo.RoleEntity()
            //{
            //     RoleId=Guid.NewGuid(),
            //       ManageAccount= Guid.NewGuid(),
            //      ManageOrg=Guid.NewGuid(),
            //       OrganizationId=Guid.NewGuid(),
            //        UnitPrice=1,
            //         Quantity=1,
            //          RoleName="",
            //           RoleType=1,
            //            SortNum=1
            //};
            //db.Insertable(role).ExecuteCommand();
            //db.Insertable(new SqlSugarDemo.UserRoleEntity()
            //{
            //     RoleId= role.RoleId,
            //     UserId=data.UserId
            //}).ExecuteCommand();
            var d1111111111111 = db.Queryable <SqlSugarDemo.UserEntity>()
                                 .Mapper <SqlSugarDemo.UserEntity, SqlSugarDemo.RoleEntity, SqlSugarDemo.UserRoleEntity>(it => ManyToMany.Config(it.UserId, it.RoleId)).InSingle(data.UserId);
        }
Пример #24
0
 public TestBook(ManyToMany many)
 {
     _many = new HashSet <ManyToMany> {
         many
     };
 }
Пример #25
0
        public static void Queryable2()
        {
            var list4 = Db.Queryable <ABMapping>()
                        .Mapper(it => it.A, it => it.AId)
                        .Where(it => it.A.Name == "a")
                        .ToList();


            var list5 = Db.Queryable <ABMapping>()
                        .Mapper(it => it.A, it => it.AId, it => it.A.Id)
                        .Where(it => it.A.Name == "a")
                        .ToList();


            var list3 = Db.Queryable <Order>()
                        .Mapper(it => it.Items, it => it.Items.First().OrderId)
                        .Where(it => it.Items.Count() > 0)
                        .ToList();

            var list6 = Db.Queryable <Order>()
                        .Mapper(it => it.Items, it => it.Items.First().OrderId)
                        .Where(it => it.Items.Any())
                        .ToList();
            var list7 = Db.Queryable <Order>()
                        .Mapper(it => it.Items, it => it.Items.First().OrderId)
                        .Where(it => it.Items.Any(y => y.ItemId == 1))
                        .ToList();

            var sql = Db.Queryable <Order>().AS("[order]").ToList();

            var sql1 = Db.Queryable <Order, OrderItem, Custom>((o, i, c) => new JoinQueryInfos(
                                                                   JoinType.Left, o.Id == i.OrderId,
                                                                   JoinType.Left, c.Id == o.CustomId
                                                                   ))
                       .AS("[aa]")
                       .AS <OrderItem>("[xx]")
                       .AS <Custom>("[yy]")
                       .Select <ViewOrder>().ToSql().Key;

            if (!sql1.Contains("[aa]") || !sql1.Contains("[xx]") || !sql1.Contains("[yy]"))
            {
                throw new Exception("unit queryable2 ");
            }
            var sql2 = Db.Queryable <OrderItem>().AS("[zz]").ToSql().Key;

            if (sql2 != "SELECT [ItemId],[OrderId],[Price],[CreateTime] FROM [zz] ")
            {
                throw new Exception("unit queryable2 ");
            }
            Db.Queryable <Order, OrderItem, Custom>((o, i, c) => new JoinQueryInfos(
                                                        JoinType.Left, o.Id == i.OrderId,
                                                        JoinType.Left, c.Id == o.CustomId
                                                        ))
            .AS("[order]")
            .AS <OrderItem>("[orderdetail]")
            .AS <Custom>("[custom]")
            .Select <ViewOrder>().ToList();

            Db.Queryable <object>().AS("[order]").Select("*").ToList();

            var qu1 = Db.Queryable <Order>().Select(it => new
            {
                id = it.Id
            }).MergeTable().Select <Order>();
            var qu2 = Db.Queryable <Order>().Select(it => new
            {
                id   = it.Id,
                name = it.Name
            }).MergeTable().Select <Order>();
            var list = Db.Queryable(qu1, qu2, JoinType.Left, (x, y) => x.Id == y.Id).Select((x, y) => new
            {
                id1  = x.Id,
                name = y.Name
            }).ToList();

            var qu3 = Db.Queryable <Order>().Select(it => new
            {
                id   = it.Id,
                name = it.Name
            }).MergeTable()
                      .Where(it => 2 > it.id).Select(it => new Order()
            {
                Id = SqlFunc.IIF(2 > it.id, 1, 2)
            }).ToList();


            var qu4 = Db.Queryable <Order>().OrderBy(it => it.Id + it.Id).ToList();

            var list11 = Db.Queryable <A>()

                         .ToList();

            var list8 = Db.Queryable <A>()
                        .Mapper <A, B, ABMapping>(it => ManyToMany.Config(it.AId, it.BId))
                        .ToList();

            Db.CodeFirst.InitTables <ABMap, TableA, TableB>();
            Db.DbMaintenance.TruncateTable("TableA");
            Db.DbMaintenance.TruncateTable("Tableb");
            Db.DbMaintenance.TruncateTable("ABMap");
            Db.Insertable(new TableA()
            {
                id = 1, Name = "A1"
            }).ExecuteCommand();
            Db.Insertable(new TableA()
            {
                id = 2, Name = "A1"
            }).ExecuteCommand();
            Db.Insertable(new TableB()
            {
                id = 1, Name = "B1"
            }).ExecuteCommand();
            Db.Insertable(new TableB()
            {
                id = 2, Name = "B2"
            }).ExecuteCommand();
            Db.Insertable(new ABMap()
            {
                Aid = 1, Bid = 1
            }).ExecuteCommand();
            Db.Insertable(new ABMap()
            {
                Aid = 1, Bid = 2
            }).ExecuteCommand();
            Db.Insertable(new ABMap()
            {
                Aid = 2, Bid = 1
            }).ExecuteCommand();
            Db.Insertable(new ABMap()
            {
                Aid = 2, Bid = 2
            }).ExecuteCommand();
            var list9 = Db.Queryable <TableA>()
                        .Mapper <TableA, TableB, ABMap>(it => ManyToMany.Config(it.Aid, it.Bid)).ToList();
        }
Пример #26
0
 public ManyToManyConstraintFrom(ManyToMany manyToMany)
 {
     _manyToMany = manyToMany;
 }
Пример #27
0
        private ICollection <T> LoadManyToMany <T>(object poco, Column column, ref ICollection <T> loadTo, ManyToMany relation)
        {
            var selectQueryBuilder = new SelectQueryBuilder <T>(_ctx, relation.ToPocoType)
                                     .Join(new Join(
                                               relation.ToEntity.Alias, relation.ToEntity.PkColumn.Name, relation.TableName, "relationNeedsAlias", relation.ForeignKeyFar
                                               ))
                                     .Join(new Join(
                                               "relatioNneedsAlias", relation.ForeignKeyNear, _entity.Name, _entity.Alias, _entity.PkColumn.Name
                                               ));

            ICollection <T> resultList = selectQueryBuilder.Build().Execute().ToList();
            // get the current cacheEntry for THIS object
            var currentPk  = _entity.PkColumn.PropInfo.GetMethod.Invoke(poco, new object[0]);
            var cacheEntry = _ctx.Cache.GetOrInsert(_entity, (long)currentPk, poco);

            cacheEntry.ManyToManyKeys = new List <object>();
            if (resultList != null && resultList.Count > 0)
            {
                // get primary keys of the objects just loaded and set them in the CacheEntry so we can track them!
                var toEntity = relation.ToEntity;

                foreach (var obj in resultList)
                {
                    var objPk = toEntity.PkColumn.PropInfo.GetMethod.Invoke(obj, new object[0]);
                    if (!cacheEntry.ManyToManyKeys.Contains(objPk))
                    {
                        cacheEntry.ManyToManyKeys.Add(objPk);
                    }
                }
            }
            return(resultList);
        }
Пример #28
0
        public static void Queryable2()
        {
            var list4 = Db.Queryable <ABMapping>()
                        .Mapper(it => it.A, it => it.AId)
                        .Where(it => it.A.Name == "a")
                        .ToList();


            var list5 = Db.Queryable <ABMapping>()
                        .Mapper(it => it.A, it => it.AId, it => it.A.Id)
                        .Where(it => it.A.Name == "a")
                        .ToList();


            var list3 = Db.Queryable <Order>()
                        .Mapper(it => it.Items, it => it.Items.First().OrderId)
                        .Where(it => it.Items.Count() > 0)
                        .ToList();

            var list6 = Db.Queryable <Order>()
                        .Mapper(it => it.Items, it => it.Items.First().OrderId)
                        .Where(it => it.Items.Any())
                        .ToList();
            var list7 = Db.Queryable <Order>()
                        .Mapper(it => it.Items, it => it.Items.First().OrderId)
                        .Where(it => it.Items.Any(y => y.ItemId == 1))
                        .ToList();

            var sql = Db.Queryable <Order>().AS("[order]").ToList();

            var sql1 = Db.Queryable <Order, OrderItem, Custom>((o, i, c) => new JoinQueryInfos(
                                                                   JoinType.Left, o.Id == i.OrderId,
                                                                   JoinType.Left, c.Id == o.CustomId
                                                                   ))
                       .AS("[aa]")
                       .AS <OrderItem>("[xx]")
                       .AS <Custom>("[yy]")
                       .Select <ViewOrder>().ToSql().Key;

            if (!sql1.Contains("[aa]") || !sql1.Contains("[xx]") || !sql1.Contains("[yy]"))
            {
                throw new Exception("unit queryable2 ");
            }
            var sql2 = Db.Queryable <OrderItem>().AS("[zz]").ToSql().Key;

            if (sql2 != "SELECT [ItemId],[OrderId],[Price],[CreateTime] FROM [zz] ")
            {
                throw new Exception("unit queryable2 ");
            }
            Db.Queryable <Order, OrderItem, Custom>((o, i, c) => new JoinQueryInfos(
                                                        JoinType.Left, o.Id == i.OrderId,
                                                        JoinType.Left, c.Id == o.CustomId
                                                        ))
            .AS("[order]")
            .AS <OrderItem>("[orderdetail]")
            .AS <Custom>("[custom]")
            .Select <ViewOrder>().ToList();

            Db.Queryable <object>().AS("[order]").Select("*").ToList();

            var qu1 = Db.Queryable <Order>().Select(it => new
            {
                id = it.Id
            }).MergeTable().Select <Order>();
            var qu2 = Db.Queryable <Order>().Select(it => new
            {
                id   = it.Id,
                name = it.Name
            }).MergeTable().Select <Order>();
            var list = Db.Queryable(qu1, qu2, JoinType.Left, (x, y) => x.Id == y.Id).Select((x, y) => new
            {
                id1  = x.Id,
                name = y.Name
            }).ToList();

            var qu3 = Db.Queryable <Order>().Select(it => new
            {
                id   = it.Id,
                name = it.Name
            }).MergeTable()
                      .Where(it => 2 > it.id).Select(it => new Order()
            {
                Id = SqlFunc.IIF(2 > it.id, 1, 2)
            }).ToList();


            var qu4 = Db.Queryable <Order>().OrderBy(it => it.Id + it.Id).ToList();

            var list11 = Db.Queryable <A>()

                         .ToList();

            var list8 = Db.Queryable <A>()
                        .Mapper <A, B, ABMapping>(it => ManyToMany.Config(it.AId, it.BId))
                        .ToList();

            Db.CodeFirst.InitTables <ABMap, TableA, TableB>();
            Db.DbMaintenance.TruncateTable("TableA");
            Db.DbMaintenance.TruncateTable("Tableb");
            Db.DbMaintenance.TruncateTable("ABMap");
            Db.Insertable(new TableA()
            {
                id = 1, Name = "A1"
            }).ExecuteCommand();
            Db.Insertable(new TableA()
            {
                id = 2, Name = "A1"
            }).ExecuteCommand();
            Db.Insertable(new TableB()
            {
                id = 1, Name = "B1"
            }).ExecuteCommand();
            Db.Insertable(new TableB()
            {
                id = 2, Name = "B2"
            }).ExecuteCommand();
            Db.Insertable(new ABMap()
            {
                Aid = 1, Bid = 1
            }).ExecuteCommand();
            Db.Insertable(new ABMap()
            {
                Aid = 1, Bid = 2
            }).ExecuteCommand();
            Db.Insertable(new ABMap()
            {
                Aid = 2, Bid = 1
            }).ExecuteCommand();
            Db.Insertable(new ABMap()
            {
                Aid = 2, Bid = 2
            }).ExecuteCommand();
            var list9 = Db.Queryable <TableA>()
                        .Mapper <TableA, TableB, ABMap>(it => ManyToMany.Config(it.Aid, it.Bid)).ToList();

            var _db = Db;

            int[] communities = { 1, 2, 3, 4, 5 };

            _db.QueryFilter.Add(new TableFilterItem <Dat_WorkBill>(it => communities.Contains(it.CommunityID ?? 0)));

            Db.CodeFirst.InitTables <Dat_WorkBill, Base_Community>();


            var rlt = _db.Queryable(_db.Queryable <Dat_WorkBill>(), _db.Queryable <Base_Community>(),

                                    JoinType.Left, (bill, com) => bill.CommunityID == com.CommunityID)

                      .Where((bill, com) => com.IsEnable == 1)


                      .Select((bill, com) => new

            {
                ID = bill.WorkBillID,

                Name = com.CommunityName
            })

                      .ToList();


            var sql12 = Db.Queryable <Order, OrderItem, Custom>((o, i, c) => true)
                        .AS("[aa]")
                        .AS <OrderItem>("[xx]")
                        .AS <Custom>("[yy]").ToSql();



            var list12 = Db.Queryable <Order>()
                         .Select(it => new
            {
                name       = it.Name,
                customName = SqlFunc.MappingColumn(default(string), " (select top 1 id from [Order] ) ")
            }).ToList();

            var p1     = "1";
            var p2     = "2";
            var list13 = Db.Queryable <Order>()
                         .Select(it => new
            {
                name       = it.Name,
                customName = SqlFunc.MappingColumn(default(string), $" (select top 1 id from [Order] where id={p1} or id={p2} ) ")
            }).ToList();

            int id = 0;

            Db.Queryable(Db.Queryable <Order>().Where(it => it.Id == 1)).Where(it => it.Id == 1).ToList();
            _db.QueryFilter.Clear();


            Db.CodeFirst.InitTables <UnitEnumTest>();
            Db.Insertable(new UnitEnumTest()
            {
                type = null
            }).ExecuteCommand();
            Db.Insertable(new UnitEnumTest()
            {
                type = DbType.MySql
            }).ExecuteCommand();
            var xx  = Db.Queryable <UnitEnumTest>().ToList();
            var xxx = Db.Storageable(new UnitEnumTest()
            {
                Name = "a",
                type = DbType.Sqlite
            }).WhereColumns(it => it.type).ToStorage();

            xxx.AsUpdateable.ExecuteCommand();

            var getOrderBy2 = Db
                              .Queryable <Order>()
                              .Select(it => new Order {
                Name = it.Name.Replace("0", "1")
            }).MergeTable().Select <Order>().Where(it => it.Name.Equals("2"))
                              .ToList();

            var list14 = Db.Queryable <Order, Order, Order>((o1, o2, o3) =>
                                                            new JoinQueryInfos(JoinType.Inner, o1.Id == o2.Id * 2, JoinType.Inner, o1.Id == o3.Id * 4)
                                                            )
                         .Select((o1, o2, o3) => new
            {
                id = o1.Id,
                x  = o1,
                x2 = o2,
                x3 = o3
            }).ToList();


            var list15 = Db.Queryable <Order, Order, Order>((o1, o2, o3) =>
                                                            new JoinQueryInfos(JoinType.Inner, o1.Id == o2.Id * 2, JoinType.Inner, o1.Id == o3.Id * 4)
                                                            )
                         .Select((o1, o2, o3) => new TestModel1
            {
                id = o1.Id.SelectAll(),
                x  = o1,
                x2 = o2,
                x3 = o3
            }).ToList();
        }