public static List <EntityProperty> ListColumnsOfTable(string dbName, string tableName) { var result = new List <EntityProperty>(); var server = new Microsoft.SqlServer.Management.Smo.Server(serverName); var db = new Microsoft.SqlServer.Management.Smo.Database(server, dbName); var table = new Microsoft.SqlServer.Management.Smo.Table(db, tableName); table.Refresh(); var dic = new Dictionary <string, string>(); foreach (Microsoft.SqlServer.Management.Smo.ForeignKey item in table.ForeignKeys) { dic.Add(item.Columns[0].Name, item.ReferencedTable); } foreach (Microsoft.SqlServer.Management.Smo.Column item in table.Columns) { var propertyType = _typeMapping[item.DataType.Name]; if (item.Nullable == true && propertyType != "string") { propertyType = propertyType + "?"; } var entityProperty = new EntityProperty() { PropertyType = propertyType, PropertyName = item.Name, IsForeignKey = item.IsForeignKey, IsIdentity = item.Identity }; if (item.IsForeignKey == true) { entityProperty.ForeignKeyTableName = UpperFirstLetter(dic[item.Name]); } result.Add(entityProperty); } return(result); }