コード例 #1
0
ファイル: TableFinder.cs プロジェクト: Bunyod545/SBFramework
        /// <summary>
        ///
        /// </summary>
        /// <param name="foreignKey"></param>
        /// <param name="table"></param>
        /// <returns></returns>
        private ForeignKeyInfo GetForeignKey(IForeignKey foreignKey, EFTableInfo table)
        {
            var result = new ForeignKeyInfo();

            result.Table  = table;
            result.Name   = foreignKey.Relational().Name;
            result.Column = table.GetColumn(foreignKey.GetColumnName());

            result.ReferenceTable  = GetReferenceTable(foreignKey);
            result.ReferenceColumn = result.ReferenceTable.GetColumn(foreignKey.GetReferenceColumnName());

            _migrateManager.CorrectName(result);
            return(result);
        }
コード例 #2
0
ファイル: TableFinder.cs プロジェクト: Bunyod545/SBFramework
        /// <summary>
        ///
        /// </summary>
        /// <param name="table"></param>
        /// <returns></returns>
        private IEnumerable <UniqueKeyInfo> GetUniqueKeys(EFTableInfo table)
        {
            var indexes = table.Entity.GetIndexes().Where(w => w.IsUnique).ToList();

            foreach (var index in indexes)
            {
                var uniqueInfo = new UniqueKeyInfo();
                uniqueInfo.Table         = table;
                uniqueInfo.Name          = index.Relational()?.Name;
                uniqueInfo.UniqueColumns = index.Properties.Select(s => GetUniqueColumn(table, s)).ToList();

                _migrateManager.CorrectName(uniqueInfo);
                yield return(uniqueInfo);
            }
        }
コード例 #3
0
ファイル: TableFinder.cs プロジェクト: Bunyod545/SBFramework
        /// <summary>
        ///
        /// </summary>
        /// <param name="table"></param>
        /// <param name="property"></param>
        /// <returns></returns>
        private ColumnInfo GetColumn(EFTableInfo table, IProperty property)
        {
            var columnRelational = property.Relational();

            var column = new ColumnInfo();

            column.Table        = table;
            column.Name         = columnRelational.ColumnName;
            column.Description  = property.PropertyInfo.GetSummary();
            column.Type         = new EFColumnTypeInfo(property);
            column.IsAllowNull  = property.IsNullable;
            column.DefaultValue = columnRelational.DefaultValue;
            column.Identity     = GetIdentity(property);

            _migrateManager.CorrectName(column);
            return(column);
        }
コード例 #4
0
ファイル: TableFinder.cs プロジェクト: Bunyod545/SBFramework
        /// <summary>
        ///
        /// </summary>
        /// <param name="context"></param>
        /// <param name="entity"></param>
        /// <returns></returns>
        private EFTableInfo ConvertToTableInfo(DbContext context, IEntityType entity)
        {
            var mapping   = entity.Relational();
            var tableInfo = new EFTableInfo();

            tableInfo.Context     = context;
            tableInfo.Entity      = entity;
            tableInfo.Name        = mapping.TableName;
            tableInfo.Schema      = mapping.Schema ?? _databaseTablesManager.DefaultSchema;
            tableInfo.ClrType     = entity.ClrType;
            tableInfo.Description = entity.ClrType.GetSummary();
            _migrateManager.CorrectName(tableInfo);

            tableInfo.Columns    = GetColumns(tableInfo);
            tableInfo.PrimaryKey = GetPrimaryKeyInfo(tableInfo);
            tableInfo.UniqueKeys = GetUniqueKeys(tableInfo).ToList();

            return(tableInfo);
        }
コード例 #5
0
ファイル: TableFinder.cs プロジェクト: Bunyod545/SBFramework
        /// <summary>
        ///
        /// </summary>
        /// <param name="table"></param>
        /// <returns></returns>
        private PrimaryKeyInfo GetPrimaryKeyInfo(EFTableInfo table)
        {
            var primary           = table.Entity.FindPrimaryKey();
            var primaryRelational = primary?.Relational();

            if (primaryRelational == null)
            {
                return(null);
            }

            var result = new PrimaryKeyInfo();

            result.Name  = primaryRelational.Name;
            result.Table = table;

            var prop = primary.Properties?.FirstOrDefault();
            var name = prop?.Relational()?.ColumnName;

            result.PrimaryColumn = table.GetColumn(name);

            _migrateManager.CorrectName(result);
            return(result);
        }
コード例 #6
0
ファイル: TableFinder.cs プロジェクト: Bunyod545/SBFramework
        /// <summary>
        ///
        /// </summary>
        /// <param name="table"></param>
        /// <returns></returns>
        private List <ForeignKeyInfo> GetForeignKeys(EFTableInfo table)
        {
            var foreignKeys = table.Entity.GetForeignKeys();

            return(foreignKeys.Select(s => GetForeignKey(s, table)).ToList());
        }
コード例 #7
0
ファイル: TableFinder.cs プロジェクト: Bunyod545/SBFramework
 /// <summary>
 ///
 /// </summary>
 /// <param name="table"></param>
 /// <param name="property"></param>
 /// <returns></returns>
 private ColumnInfo GetUniqueColumn(EFTableInfo table, IProperty property)
 {
     return(table.GetColumn(property.Relational().ColumnName));
 }
コード例 #8
0
ファイル: TableFinder.cs プロジェクト: Bunyod545/SBFramework
        /// <summary>
        ///
        /// </summary>
        /// <param name="table"></param>
        /// <returns></returns>
        private List <ColumnInfo> GetColumns(EFTableInfo table)
        {
            var props = table.Entity.GetProperties();

            return(props.Select(s => GetColumn(table, s)).ToList());
        }