Example #1
0
        /// <summary>
        /// 为某个指定的仓库对象构造一个 DbTable
        /// </summary>
        /// <param name="repo"></param>
        /// <returns></returns>
        internal static DbTable CreateORMTable(IRepositoryInternal repo)
        {
            var em = repo.EntityMeta;

            if (em.TableMeta == null)
            {
                throw new ORMException(string.Format("类型 {0} 没有映射数据库,无法为其创造 ORM 运行时对象。", em.EntityType.FullName));
            }

            DbTable res = null;

            switch (repo.RdbDataProvider.DbSetting.ProviderName)
            {
            case DbSetting.Provider_SqlClient:
                res = new SqlTable(repo);
                break;

            case DbSetting.Provider_SqlCe:
                res = new SqlCeTable(repo);
                break;

            case DbSetting.Provider_Oracle:
                res = new OracleTable(repo);
                break;

            default:
                throw new NotSupportedException();
            }

            ProcessManagedProperties(em.EntityType, res, em);

            return(res);
        }
Example #2
0
        /// <summary>
        /// 为某个指定的仓库对象构造一个 DbTable
        /// </summary>
        /// <param name="repo"></param>
        /// <returns></returns>
        internal static RdbTable CreateORMTable(IRepositoryInternal repo)
        {
            RdbTable table = null;

            var provider = RdbDataProvider.Get(repo).DbSetting.ProviderName;

            switch (provider)
            {
            case DbSetting.Provider_SqlClient:
                table = new SqlServerTable(repo);
                break;

            case DbSetting.Provider_SqlCe:
                table = new SqlCeTable(repo);
                break;

            case DbSetting.Provider_MySql:
                table = new MySqlTable(repo);
                break;

            default:
                if (DbConnectionSchema.IsOracleProvider(provider))
                {
                    table = new OracleTable(repo);
                    break;
                }
                throw new NotSupportedException();
            }

            table.IdentifierProvider = DbMigrationProviderFactory.GetIdentifierProvider(provider);
            table.DbTypeConverter    = DbMigrationProviderFactory.GetDbTypeConverter(provider);

            var em = repo.EntityMeta;

            foreach (var columnInfo in table.Info.Columns)
            {
                var epm = em.Property(columnInfo.Property);
                if (epm == null)
                {
                    throw new ArgumentNullException(string.Format("{0}.{1} 属性需要使用托管属性进行编写。", table.Info.Class.FullName, columnInfo.Property.Name));
                }

                var column = table.CreateColumn(columnInfo);

                table.Add(column);
            }

            return(table);
        }
Example #3
0
        /// <summary>
        /// 为某个指定的仓库对象构造一个 DbTable
        /// </summary>
        /// <param name="repo"></param>
        /// <returns></returns>
        internal static RdbTable CreateORMTable(IRepositoryInternal repo)
        {
            RdbTable table = null;

            switch (RdbDataProvider.Get(repo).DbSetting.ProviderName)
            {
            case DbSetting.Provider_SqlClient:
                table = new SqlTable(repo);
                break;

            case DbSetting.Provider_SqlCe:
                table = new SqlCeTable(repo);
                break;

            case DbSetting.Provider_Oracle:
                table = new OracleTable(repo);
                break;

            default:
                throw new NotSupportedException();
            }

            var em = repo.EntityMeta;

            foreach (var columnInfo in table.Info.Columns)
            {
                //生成 ManagedPropertyBridge
                var epm = em.Property(columnInfo.Property);
                if (epm == null)
                {
                    throw new ArgumentNullException(string.Format("{0}.{1} 属性需要使用托管属性进行编写。", table.Info.Class.FullName, columnInfo.Property.Name));
                }

                var column = table.CreateColumn(columnInfo);
                table.Add(column);
            }

            return(table);
        }