示例#1
0
 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
                ));
 }
示例#4
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);
        }
示例#5
0
            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.");
            }
示例#6
0
            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.");
            }
示例#7
0
            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;
 }
示例#10
0
 public ToRelationshipEntityBuilder To(string entityNamespace, string entityName)
 {
     return(RelationshipBuilder.To(entityNamespace, entityName));
 }
 public ReferenceBuilder Reference(
     string foreignKeyPropertyName,
     string primaryKeyPropertyName)
 {
     return(RelationshipBuilder.Reference(foreignKeyPropertyName, primaryKeyPropertyName));
 }