public void Cascade_should_be_fluent()
 {
     var oneToManyPart = new OneToManyPart<Artist, Album>(null);
     var attributeStore = new AttributeStore<ICollectionMapping>();
     var cascadePart = new CascadePart<OneToManyPart<Artist, Album>>(oneToManyPart, attributeStore);
     cascadePart.All().ShouldEqual(oneToManyPart);
 }
コード例 #2
0
        public static OneToManyPart <TChild> HasManyBidirectional <TParent, TChild>(
            [NotNull] this AutoMapping <TParent> mapping,
            [NotNull] Expression <Func <TParent, IEnumerable <TChild> > > childCollection,
            [NotNull] Expression <Func <TChild, TParent> > parentReference,
            bool cascadeAllDeleteOrphan = true)
        {
            Fail.IfArgumentNull(mapping, nameof(mapping));
            Fail.IfArgumentNull(childCollection, nameof(childCollection));
            Fail.IfArgumentNull(parentReference, nameof(parentReference));

            Member member = parentReference.ToMember();
            var    parentReferenceColumnName = ForeignKeyColumnNameConvention.GetColumnName(member);

            OneToManyPart <TChild> bidirectionalMapping = mapping
                                                          .HasMany(childCollection);

            if (cascadeAllDeleteOrphan)
            {
                bidirectionalMapping = bidirectionalMapping
                                       .Cascade
                                       .AllDeleteOrphan();
            }

            return(bidirectionalMapping
                   .Inverse()
                   .KeyColumn(parentReferenceColumnName));
        }
 public void Can_get_cascade_part()
 {
     var oneToManyPart = new OneToManyPart<Artist, Album>(null);
     oneToManyPart.Cascade.ShouldNotBeNull();
 }
コード例 #4
0
 public static OneToManyPart <TChild> PropertyRef <TChild>(this OneToManyPart <TChild> oneToMany, Expression <Func <TChild, object> > columnExp)
 {
     return(oneToMany.PropertyRef(columnExp.GetFullPropertyName()));
 }
コード例 #5
0
 /// <summary>
 /// Specify the key column name using the given expression with additional "Id" postfix
 /// </summary>
 /// <typeparam name="TChild"></typeparam>
 /// <param name="oneToMany"></param>
 /// <param name="columnExp"></param>
 /// <returns></returns>
 public static OneToManyPart <TChild> KeyColumn <TChild>(this OneToManyPart <TChild> oneToMany, Expression <Func <TChild, object> > columnExp)
 {
     return(oneToMany.KeyColumn(columnExp.GetFullPropertyName() + "Id"));
 }
コード例 #6
0
 internal void SetThisColumnKey <TU>(OneToManyPart <TU> column)
 {
     column.KeyColumn(GetIdName);
 }
コード例 #7
0
 public static OneToManyPart <TModel> Elements <TModel>(this OneToManyPart <TModel> oneToManyPart)
 {
     return(oneToManyPart.Element("string"));
 }
コード例 #8
0
 public static OneToManyPart <TChild> KeyColumn <TChild, TParent>(this OneToManyPart <TChild> oneToManyPart,
                                                                  Expression <Func <TChild, TParent> > memberExpression)
 {
     return(oneToManyPart.KeyColumn(memberExpression.ToMember().Name + "_id"));
 }