예제 #1
0
        public IOrmAttribute MergeChanges(IOrmAttribute otherAttribute, MergeConflictAction mergeConflictAction)
        {
            OrmKeyGeneratorAttribute other        = (OrmKeyGeneratorAttribute)otherAttribute;
            OrmKeyGeneratorAttribute mergedResult = new OrmKeyGeneratorAttribute();

            bool enabled = this.Enabled;

            //if (!other.Enabled && mergeConflictAction == MergeConflictAction.TakeOther)
            if (other.Enabled && !enabled && mergeConflictAction == MergeConflictAction.TakeOther)
            {
                enabled = other.Enabled;
            }

            mergedResult.Enabled = enabled;

            var defaultableItems      = GetDefaultableItems();
            var otherDefaultableItems = other.GetDefaultableItems();

            var mergedKind = defaultableItems.Item1.Merge(otherDefaultableItems.Item1, mergeConflictAction);

            mergedResult.Kind = mergedKind.IsDefault() ? KeyGeneratorKind.Default : mergedKind.Value;

            var mergedName = defaultableItems.Item2.Merge(otherDefaultableItems.Item2, mergeConflictAction);

            mergedResult.Name = mergedName.Value;

            var mergedType = defaultableItems.Item3.Merge(otherDefaultableItems.Item3, mergeConflictAction);

            mergedResult.Type = mergedType.Value;

            return(mergedResult);
        }
예제 #2
0
        protected override bool InternalEqualsTo(DefaultableMulti other)
        {
            OrmKeyGeneratorAttribute otherAttr = (OrmKeyGeneratorAttribute)other;

            return(this.Kind == otherAttr.Kind &&
                   Util.StringEqual(this.Name, otherAttr.Name, false) &&
                   Util.StringEqual(this.Type, otherAttr.Type, false));
        }
예제 #3
0
 protected override void InternalAssignFrom(DefaultableMulti other)
 {
     if (other is OrmKeyGeneratorAttribute)
     {
         OrmKeyGeneratorAttribute attr = (OrmKeyGeneratorAttribute)other;
         this.Enabled = attr.Enabled;
         this.Kind    = attr.Kind;
         this.Name    = attr.Name;
         this.Type    = attr.Type;
     }
 }