public void Configure(EntityInfo entityInfo, DbTableInfoBuilder builder)
 {
     foreach (ITableConfiguration configuration in this.members)
     {
         configuration.Configure(entityInfo, builder);
     }
 }
        public void Configure(EntityInfo entityInfo, DbTableInfoBuilder builder)
        {
            string tableName = entityInfo.TableName;

            builder.EntityType = this.schema.GetEntityType(tableName);
            builder.Name       = tableName;
        }
Example #3
0
        public void Configure(EntityInfo entityInfo, DbTableInfoBuilder builder)
        {
            string tableName = entityInfo.TableName;

            builder.EntityType = this.schema.GetEntityType(tableName);
            builder.Name = tableName;
        }
 public void Configure(EntityInfo entityInfo, DbTableInfoBuilder builder)
 {
     foreach (EntityPropertyInfo property in entityInfo.Properties)
     {
         if (property.Facets.Identity && IsIdentityType(property.ClrType))
         {
             builder.IdentityField = builder.FindMember(property);
         }
     }
 }
Example #5
0
 public void Configure(EntityInfo entityInfo, DbTableInfoBuilder builder)
 {
     foreach (EntityPropertyInfo property in entityInfo.Properties)
     {
         if (property.Facets.Identity && IsIdentityType(property.ClrType))
         {
             builder.IdentityField = builder.FindMember(property);
         }
     }
 }
Example #6
0
        public void Configure(EntityInfo entityInfo, DbTableInfoBuilder builder)
        {
            foreach (EntityPropertyInfo property in entityInfo.Properties)
            {
                if (!property.Facets.Nullable && TypeHelper.IsNullable(property.ClrType))
                {
                    MemberInfo member = builder.FindMember(property);
                    object factory = ConstraintFactories.NotNull(member);

                    builder.AddContraintFactory(factory);
                }
            }
        }
        public void Configure(EntityInfo entityInfo, DbTableInfoBuilder builder)
        {
            foreach (EntityPropertyInfo property in entityInfo.Properties)
            {
                if (property.Facets.Identity && property.ClrType == typeof(Guid))
                {
                    MemberInfo member = builder.FindMember(property);
                    object factory = ConstraintFactories.GeneratedGuid(member);

                    builder.AddContraintFactory(factory);
                }
            }
        }
Example #8
0
        public void Configure(EntityInfo entityInfo, DbTableInfoBuilder builder)
        {
            foreach (EntityPropertyInfo property in entityInfo.Properties)
            {
                if (!property.Facets.Nullable && TypeHelper.IsNullable(property.ClrType))
                {
                    MemberInfo member  = builder.FindMember(property);
                    object     factory = ConstraintFactories.NotNull(member);

                    builder.AddContraintFactory(factory);
                }
            }
        }
        public void Configure(EntityInfo entityInfo, DbTableInfoBuilder builder)
        {
            foreach (EntityPropertyInfo property in entityInfo.Properties)
            {
                if (property.Facets.Identity && property.ClrType == typeof(Guid))
                {
                    MemberInfo member  = builder.FindMember(property);
                    object     factory = ConstraintFactories.GeneratedGuid(member);

                    builder.AddContraintFactory(factory);
                }
            }
        }
Example #10
0
        public void Configure(EntityInfo entityInfo, DbTableInfoBuilder builder)
        {
            IList<PropertyInfo> keyMembers = new List<PropertyInfo>();

            foreach (EntityPropertyInfo property in entityInfo.KeyMembers)
            {
                PropertyInfo member = builder.FindMember(property);

                keyMembers.Add(member);
            }

            builder.PrimaryKey = 
                KeyInfoHelper.CreateKeyInfo(builder.EntityType, keyMembers.ToArray());
        }
Example #11
0
        public void Configure(EntityInfo entityInfo, DbTableInfoBuilder builder)
        {
            IList <PropertyInfo> keyMembers = new List <PropertyInfo>();

            foreach (EntityPropertyInfo property in entityInfo.KeyMembers)
            {
                PropertyInfo member = builder.FindMember(property);

                keyMembers.Add(member);
            }

            builder.PrimaryKey =
                KeyInfoHelper.CreateKeyInfo(builder.EntityType, keyMembers.ToArray());
        }
Example #12
0
        public static IKeyInfo EnsureKey(
            MemberInfo[] members,
            bool unique,
            DbTableInfoBuilder tableBuilder)
        {
            IKeyInfo keyInfo = tableBuilder.FindKey(members, false, unique);

            if (keyInfo == null)
            {
                keyInfo = KeyInfoHelper.CreateKeyInfo(tableBuilder.EntityType, members);
                tableBuilder.AddKey(keyInfo, unique);
            }

            return(keyInfo);
        }
        public static IKeyInfo EnsureKey(
            MemberInfo[] members,
            bool unique,
            DbTableInfoBuilder tableBuilder)
        {
            IKeyInfo keyInfo = tableBuilder.FindKey(members, false, unique);

            if (keyInfo == null)
            {
                keyInfo = KeyInfoHelper.CreateKeyInfo(tableBuilder.EntityType, members);
                tableBuilder.AddKey(keyInfo, unique);
            }

            return keyInfo;
        }
        public void Configure(EntityInfo entityInfo, DbTableInfoBuilder builder)
        {
            foreach (EntityPropertyInfo property in entityInfo.Properties)
            {
                if (property.ClrType == typeof(string) &&
                    property.Facets.LimitedLength)
                {
                    MemberInfo member = builder.FindMember(property);
                    int length = property.Facets.MaxLength;

                    object factory = ConstraintFactories.VarCharLimit(member, length);

                    builder.AddContraintFactory(factory);
                }
            }
        }
        public void Configure(EntityInfo entityInfo, DbTableInfoBuilder builder)
        {
            foreach (EntityPropertyInfo property in entityInfo.Properties)
            {
                if (property.ClrType == typeof(string) &&
                    property.Facets.LimitedLength)
                {
                    MemberInfo member = builder.FindMember(property);
                    int        length = property.Facets.MaxLength;

                    object factory = ConstraintFactories.VarCharLimit(member, length);

                    builder.AddContraintFactory(factory);
                }
            }
        }
Example #16
0
        public void Configure(EntityInfo entityInfo, DbTableInfoBuilder builder)
        {
            var indexes = entityInfo
                .Properties
                .SelectMany(p => p.Indexes, (p, i) => new { Property = p, Index = i })
                .GroupBy(x => x.Index.Name);

            foreach (var indexGroup in indexes)
            {
                var index = indexGroup.First().Index;

                var indexProps = indexGroup
                    .OrderBy(x => x.Index.Order)
                    .Select(x => builder.FindMember(x.Property))
                    .ToArray();

                var keyInfo = KeyInfoHelper.CreateKeyInfo(builder.EntityType, indexProps);

                builder.AddKey(keyInfo, index.IsUnique);
            }
        }
Example #17
0
        public void Configure(EntityInfo entityInfo, DbTableInfoBuilder builder)
        {
            var indexes = entityInfo
                          .Properties
                          .SelectMany(p => p.Indexes, (p, i) => new { Property = p, Index = i })
                          .GroupBy(x => x.Index.Name);

            foreach (var indexGroup in indexes)
            {
                var index = indexGroup.First().Index;

                var indexProps = indexGroup
                                 .OrderBy(x => x.Index.Order)
                                 .Select(x => builder.FindMember(x.Property))
                                 .ToArray();

                var keyInfo = KeyInfoHelper.CreateKeyInfo(builder.EntityType, indexProps);

                builder.AddKey(keyInfo, index.IsUnique);
            }
        }
Example #18
0
        public void Configure(AssociationInfo associationInfo, DbSchemaBuilder builder)
        {
            var primary = associationInfo.PrimaryTable;
            var foreign = associationInfo.ForeignTable;

            DbTableInfoBuilder primaryTable = builder.Find(primary.TableName);
            DbTableInfoBuilder foreignTable = builder.Find(foreign.TableName);

            MemberInfo[] primaryKeyMembers =
                GetMembers(
                    primaryTable.EntityType,
                    primary.PropertyNames);

            MemberInfo[] foreignKeyMembers =
                GetMembers(
                    foreignTable.EntityType,
                    foreign.PropertyNames);

            IKeyInfo primaryKeyInfo =
                EnsureKey(
                    primaryKeyMembers,
                    true,
                    primaryTable);

            IKeyInfo foreignKeyInfo =
                EnsureKey(
                    foreignKeyMembers,
                    false,
                    foreignTable);

            IRelationContraint[] relationConstraints =
                new IRelationContraint[primaryKeyMembers.Length];

            for (int i = 0; i < relationConstraints.Length; i++)
            {
                relationConstraints[i] =
                    new RelationConstraint(primaryKeyMembers[i], foreignKeyMembers[i]);
            }

            Delegate primaryToForeignConverter =
                CreateConverter(
                    PrimaryToForeignConverterMethod,
                    primaryKeyInfo,
                    foreignKeyInfo,
                    relationConstraints);

            Delegate foreignToPrimaryConverter =
                CreateConverter(
                    ForeignToPrimaryConverterMethod,
                    primaryKeyInfo,
                    foreignKeyInfo,
                    relationConstraints);

            builder.Register(
                new DbRelationInfo(
                    primaryTable:               primary.TableName,
                    primaryKeyInfo:             primaryKeyInfo,
                    primaryToForeignConverter:  primaryToForeignConverter,
                    foreignTable:               foreign.TableName,
                    foreignKeyInfo:             foreignKeyInfo,
                    foreignToPrimaryConverter:  foreignToPrimaryConverter,
                    cascadedDelete:             associationInfo.CascadedDelete));
        }