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")); }
public TestBook(string title, ManyToMany many) { Title = title; _many = new HashSet <ManyToMany> { many }; }
/// <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); }
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)); }
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") });
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)); }
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)); }
/// <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); }
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); }
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)); } }
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 }); }
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); }
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 ) }); }
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); }
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); }
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"); }
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); }
public ManyToManyConstraintTo(ManyToMany manyToMany) { _manyToMany = manyToMany; }
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); }
public TestBook(ManyToMany many) { _many = new HashSet <ManyToMany> { many }; }
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(); }
public ManyToManyConstraintFrom(ManyToMany manyToMany) { _manyToMany = manyToMany; }
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); }
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(); }