/// <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); }
/// <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); }
/// <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); }