public static Boolean IsModel(Type t) { var table_attribute = ModelCache.GetTableAttribute(t); var column_attributes = ModelCache.GetColumnMembers(t); return(table_attribute != null && column_attributes != null && column_attributes.Any()); }
public static String TableName(Type t) { var ta = ModelCache.GetTableAttribute(t); if (ta == null) { return(null); } if (!String.IsNullOrEmpty(ta.TableName)) { return(ta.TableName); } else { return(t.Name); } }
public static void CheckColumns(Type t) { if (ModelCache.GetTableAttribute(t) != null) { var databaseColumns = Schema.GetColumnsForTable(Model.TableName(t), Model.DatabaseName(t), Model.ConnectionString(t)); var columnMembers = Model.GenerateColumnMembers(t); foreach (var cm in columnMembers) { var modelColumn = cm.ColumnAttribute; if (!modelColumn.IsForReadOnly) { if (!databaseColumns.Any(c => c.Name.Equals(cm.Name, StringComparison.InvariantCultureIgnoreCase))) { throw new ColumnMissingException(String.Format("\'{0}\' : Column in the model doesn't map to the schema.", cm.Name)); } var databaseColumn = databaseColumns.FirstOrDefault(c => c.Name.Equals(cm.Name, StringComparison.InvariantCultureIgnoreCase)); if (!modelColumn.IsPrimaryKey && databaseColumn.CanBeNull != modelColumn.CanBeNull) { throw new ColumnNullabilityException(String.Format("Column Nullability Mismatch : {4} DBColumn: {0} {2} ModelColumn: {1} {3}" , databaseColumn.Name , cm.Name , databaseColumn.CanBeNull.ToString() , modelColumn.CanBeNull.ToString() , Model.TableName(t)) ); } } } foreach (var column in databaseColumns) { if (!column.IsForReadOnly) { if (!columnMembers.Any(c => c.Name.Equals(column.Name, StringComparison.InvariantCultureIgnoreCase))) { throw new ColumnMissingException(String.Format("\'{0}\' : Column in the schema ({1}) doesn't map to the model.", column.Name, Model.TableName(t))); } } } } }
public static String ConnectionString(Type t) { var ta = ModelCache.GetTableAttribute(t); if (ta == null) { throw new SchemaMetadataException("Base Model classes must have a 'Table' attribute specifying the relation in the database to interact with!"); } if (!String.IsNullOrEmpty(ta.ConnectionName)) { return(DatabaseConfigurationContext.ConnectionStrings[ta.ConnectionName]); } else if (!String.IsNullOrEmpty(DatabaseConfigurationContext.DefaultConnectionString)) { return(DatabaseConfigurationContext.DefaultConnectionString); } else { throw new SchemaMetadataException("No connection string for object."); } }
public static Boolean UseNoLock(Type t) { return(ModelCache.GetTableAttribute(t).UseNoLock); }
public static String SchemaName(Type t) { var schemaName = ModelCache.GetTableAttribute(t).SchemaName; return(schemaName ?? DatabaseConfigurationContext.DefaultSchemaName ?? "dbo"); }
public static String DatabaseName(Type t) { var databaseName = ModelCache.GetTableAttribute(t).DatabaseName; return(!String.IsNullOrEmpty(databaseName) ? databaseName : DatabaseConfigurationContext.DefaultDatabaseName); }
public static String ConnectionName(Type t) { TableAttribute ta = ModelCache.GetTableAttribute(t); return(ta.ConnectionName ?? DatabaseConfigurationContext.DefaultConnectionName); }