internal FromRelationshipEntityBuilder( RelationshipBuilder relationshipBuilder, string entityNamespace, string entityName) : base(relationshipBuilder, entityNamespace, entityName) { }
public static RelationshipBuilder <TParent> HasMany <TParent, TChild>(this RelationshipBuilder <TParent> relationshipBuilder, Expression <Func <TParent, LazyList <TChild> > > portalExpression, Func <TParent, int> childIdSelector) where TParent : ModelBase where TChild : ModelBase { return(relationshipBuilder.For(portalExpression.GetMemberName()) .LazyLoad((db, parent) => db.Query <TChild>().Where(c => c.Id == childIdSelector(parent)).ToList())); }
public static RelationshipBuilder <TParent> HasOne <TParent, TChild>(this RelationshipBuilder <TParent> relationshipBuilder, Expression <Func <TParent, LazyLoaded <TChild> > > portalExpression, Func <TParent, int> childIdSelector) where TParent : ModelBase where TChild : ModelBase { return(relationshipBuilder.For(portalExpression.GetMemberName()) .LazyLoad( query: (db, parent) => db.Query <TChild>().SingleOrDefault(c => c.Id == childIdSelector(parent)), condition: parent => childIdSelector(parent) > 0 )); }
internal RelationshipBuilder Relationship(string name) { // Relationship name must be unique. if (DefinesRelationship(name)) { throw new InvalidOperationException($"Relationship \"{name}\" is already defined for this model."); } var relationshipBuilder = new RelationshipBuilder(this, name); _relationshipBuilders.Add(relationshipBuilder); return(relationshipBuilder); }
public void GivenNullTargetList_ThenThrowsArgumentNullException() { // arrange var source = new Card(); const RelationshipType type = RelationshipType.Breaks; var mockRelationshipFactory = new Mock <IRelationshipFactory>(MockBehavior.Strict); var relationshipBuilder = new RelationshipBuilder(mockRelationshipFactory.Object); // act relationshipBuilder.BuildOneVsMany(source, null, type); // assert Assert.Fail("ArgumentNullException should have been thrown."); }
public void GivenNullCard_ThenThrowsArgumentNullException() { // arrange var targets = new List <Card>(); const RelationshipType type = RelationshipType.Breaks; var mockRelationshipFactory = new Mock <IRelationshipFactory>(MockBehavior.Strict); var relationshipBuilder = new RelationshipBuilder(mockRelationshipFactory.Object); // act relationshipBuilder.BuildOneVsMany(null, targets.AsQueryable(), type); // assert Assert.Fail("ArgumentNullException should have been thrown."); }
public void GivenValid_ThenRelationshipsAreCreated() { // arrange var source = new Card { Name = "Parent" }; var targets = new List <Card> { new Card { Name = "Child 1" }, new Card { Name = "Child 2" }, new Card { Name = "Child 3" }, }; const RelationshipType type = RelationshipType.Breaks; var mockRelationshipFactory = new Mock <IRelationshipFactory>(MockBehavior.Strict); var relationshipBuilder = new RelationshipBuilder(mockRelationshipFactory.Object); mockRelationshipFactory .Setup(x => x.Create(type, source, It.IsAny <Card>())) .Returns((RelationshipType a, Card b, Card target) => new Relationship { Source = source, Target = target, Type = type }); // act relationshipBuilder.BuildOneVsMany(source, targets.AsQueryable(), type); // assert Assert.AreEqual(3, source.Relationships.Count); Assert.IsNotNull(source.Relationships.FirstOrDefault(x => x.Target.Name == "Child 1")); Assert.IsNotNull(source.Relationships.FirstOrDefault(x => x.Target.Name == "Child 2")); Assert.IsNotNull(source.Relationships.FirstOrDefault(x => x.Target.Name == "Child 3")); }
public override IReadOnlyList <ElementBuilder> Relationship_ComputeProperty_RelatedElement(RelationshipBuilder _this) { return(new List <ElementBuilder>()); }
internal OneToOneBuilder(RelationshipBuilder builder) : base(builder.Metadata, builder.ModelBuilder) { _builder = builder; }
public ToRelationshipEntityBuilder To(string entityNamespace, string entityName) { return(RelationshipBuilder.To(entityNamespace, entityName)); }
public ReferenceBuilder Reference( string foreignKeyPropertyName, string primaryKeyPropertyName) { return(RelationshipBuilder.Reference(foreignKeyPropertyName, primaryKeyPropertyName)); }