nfine框架 上传文件_NFine框架的T4模板

public classDbHelper

{#region GetDbTables

public static List GetDbTables(string connectionString, string database, string tables = null)

{if (!string.IsNullOrEmpty(tables))

{

tables= string.Format("and obj.name in ('{0}')", tables.Replace(",", "','"));

}#region SQL

string sql = string.Format(@"SELECT

obj.name tablename,

schem.name schemname,

idx.rows,

CAST

(

CASE

WHEN (SELECT COUNT(1) FROM sys.indexes WHERE object_id= obj.OBJECT_ID AND is_primary_key=1) >=1 THEN 1

ELSE 0

END

AS BIT) HasPrimaryKey

from {0}.sys.objects obj

inner join {0}.dbo.sysindexes idx on obj.object_id=idx.id and idx.indid<=1

INNER JOIN {0}.sys.schemas schem ON obj.schema_id=schem.schema_id

where type='U' {1}

order by obj.name", database, tables);#endregionDataTable dt=GetDataTable(connectionString, sql);return dt.Rows.Cast().Select(row => newDbTable

{

TableName= row.Field("tablename"),

SchemaName= row.Field("schemname"),

Rows= row.Field("rows"),

HasPrimaryKey= row.Field("HasPrimaryKey")

}).ToList();

}#endregion

#region GetDbColumns

public static List GetDbColumns(string connectionString, string database, string tableName, string schema = "dbo")

{#region SQL

string sql = string.Format(@"WITH indexCTE AS

(

SELECT

ic.column_id,

ic.index_column_id,

ic.object_id

FROM {0}.sys.indexes idx

INNER JOIN {0}.sys.index_columns ic ON idx.index_id = ic.index_id AND idx.object_id = ic.object_id

WHERE idx.object_id =OBJECT_ID(@tableName) AND idx.is_primary_key=1

)

select

colm.column_id ColumnID,

CAST(CASE WHEN indexCTE.column_id IS NULL THEN 0 ELSE 1 END AS BIT) IsPrimaryKey,

colm.name ColumnName,

systype.name ColumnType,

colm.is_identity IsIdentity,

colm.is_nullable IsNullable,

cast(colm.max_length as int) ByteLength,

(

case

when systype.name='nvarchar' and colm.max_length>0 then colm.max_length/2

when systype.name='nchar' and colm.max_length>0 then colm.max_length/2

when systype.name='ntext' and colm.max_length>0 then colm.max_length/2

else colm.max_length

end

) CharLength,

cast(colm.precision as int) Precision,

cast(colm.scale as int) Scale,

prop.value Remark

from {0}.sys.columns colm

inner join {0}.sys.types systype on colm.system_type_id=systype.system_type_id and colm.user_type_id=systype.user_type_id

left join {0}.sys.extended_properties prop on colm.object_id=prop.major_id and colm.column_id=prop.minor_id

LEFT JOIN indexCTE ON colm.column_id=indexCTE.column_id AND colm.object_id=indexCTE.object_id

where colm.object_id=OBJECT_ID(@tableName)

order by colm.column_id", database);#endregionSqlParameter param= new SqlParameter("@tableName", SqlDbType.NVarChar, 100) { Value = string.Format("{0}.{1}.{2}", database, schema, tableName) };

DataTable dt=GetDataTable(connectionString, sql, param);return dt.Rows.Cast().Select(row => newDbColumn()

{

ColumnID= row.Field("ColumnID"),

IsPrimaryKey= row.Field("IsPrimaryKey"),

ColumnName= row.Field("ColumnName"),

ColumnType= row.Field("ColumnType"),

IsIdentity= row.Field("IsIdentity"),

IsNullable= row.Field("IsNullable"),

ByteLength= row.Field("ByteLength"),

CharLength= row.Field("CharLength"),

Scale= row.Field("Scale"),

Remark= row["Remark"].ToString()

}).ToList();

}#endregion

#region GetDataTable

public static DataTable GetDataTable(string connectionString, string commandText, paramsSqlParameter[] parms)

{using (SqlConnection connection = newSqlConnection(connectionString))

{

SqlCommand command=connection.CreateCommand();

command.CommandText=commandText;

command.Parameters.AddRange(parms);

SqlDataAdapter adapter= newSqlDataAdapter(command);

DataTable dt= newDataTable();

adapter.Fill(dt);returndt;

}

}#endregion

#region GetPrimaryKey

public static string GetPrimaryKey(ListdbColumns)

{string primaryKey = string.Empty;if (dbColumns!=null&&dbColumns.Count>0)

{foreach (var item indbColumns)

{if (item.IsPrimaryKey==true)

{

primaryKey=item.ColumnName;

}

}

}returnprimaryKey;

}#endregion}#region DbTable

///

///表结构///

public sealed classDbTable

{///

///表名称///

public string TableName { get; set; }///

///表的架构///

public string SchemaName { get; set; }///

///表的记录数///

public int Rows { get; set; }///

///是否含有主键///

public bool HasPrimaryKey { get; set; }

}#endregion

#region DbColumn

///

///表字段结构///

public sealed classDbColumn

{///

///字段ID///

public int ColumnID { get; set; }///

///是否主键///

public bool IsPrimaryKey { get; set; }///

///字段名称///

public string ColumnName { get; set; }///

///字段类型///

public string ColumnType { get; set; }///

///数据库类型对应的C#类型///

public stringCSharpType

{get{returnSqlServerDbTypeMap.MapCsharpType(ColumnType);

}

}///

///

///

publicType CommonType

{get{returnSqlServerDbTypeMap.MapCommonType(ColumnType);

}

}///

///字节长度///

public int ByteLength { get; set; }///

///字符长度///

public int CharLength { get; set; }///

///小数位///

public int Scale { get; set; }///

///是否自增列///

public bool IsIdentity { get; set; }///

///是否允许空///

public bool IsNullable { get; set; }///

///描述///

public string Remark { get; set; }

}#endregion

#region SqlServerDbTypeMap

public classSqlServerDbTypeMap

{public static string MapCsharpType(stringdbtype)

{if (string.IsNullOrEmpty(dbtype)) returndbtype;

dbtype=dbtype.ToLower();string csharpType = "object";switch(dbtype)

{case "bigint": csharpType = "long"; break;case "binary": csharpType = "byte[]"; break;case "bit": csharpType = "bool"; break;case "char": csharpType = "string"; break;case "date": csharpType = "DateTime"; break;case "datetime": csharpType = "DateTime"; break;case "datetime2": csharpType = "DateTime"; break;case "datetimeoffset": csharpType = "DateTimeOffset"; break;case "decimal": csharpType = "decimal"; break;case "float": csharpType = "double"; break;case "image": csharpType = "byte[]"; break;case "int": csharpType = "int"; break;case "money": csharpType = "decimal"; break;case "nchar": csharpType = "string"; break;case "ntext": csharpType = "string"; break;case "numeric": csharpType = "decimal"; break;case "nvarchar": csharpType = "string"; break;case "real": csharpType = "Single"; break;case "smalldatetime": csharpType = "DateTime"; break;case "smallint": csharpType = "short"; break;case "smallmoney": csharpType = "decimal"; break;case "sql_variant": csharpType = "object"; break;case "sysname": csharpType = "object"; break;case "text": csharpType = "string"; break;case "time": csharpType = "TimeSpan"; break;case "timestamp": csharpType = "byte[]"; break;case "tinyint": csharpType = "byte"; break;case "uniqueidentifier": csharpType = "Guid"; break;case "varbinary": csharpType = "byte[]"; break;case "varchar": csharpType = "string"; break;case "xml": csharpType = "string"; break;default: csharpType = "object"; break;

}returncsharpType;

}public static Type MapCommonType(stringdbtype)

{if (string.IsNullOrEmpty(dbtype)) returnType.Missing.GetType();

dbtype=dbtype.ToLower();

Type commonType= typeof(object);switch(dbtype)

{case "bigint": commonType = typeof(long); break;case "binary": commonType = typeof(byte[]); break;case "bit": commonType = typeof(bool); break;case "char": commonType = typeof(string); break;case "date": commonType = typeof(DateTime); break;case "datetime": commonType = typeof(DateTime); break;case "datetime2": commonType = typeof(DateTime); break;case "datetimeoffset": commonType = typeof(DateTimeOffset); break;case "decimal": commonType = typeof(decimal); break;case "float": commonType = typeof(double); break;case "image": commonType = typeof(byte[]); break;case "int": commonType = typeof(int); break;case "money": commonType = typeof(decimal); break;case "nchar": commonType = typeof(string); break;case "ntext": commonType = typeof(string); break;case "numeric": commonType = typeof(decimal); break;case "nvarchar": commonType = typeof(string); break;case "real": commonType = typeof(Single); break;case "smalldatetime": commonType = typeof(DateTime); break;case "smallint": commonType = typeof(short); break;case "smallmoney": commonType = typeof(decimal); break;case "sql_variant": commonType = typeof(object); break;case "sysname": commonType = typeof(object); break;case "text": commonType = typeof(string); break;case "time": commonType = typeof(TimeSpan); break;case "timestamp": commonType = typeof(byte[]); break;case "tinyint": commonType = typeof(byte); break;case "uniqueidentifier": commonType = typeof(Guid); break;case "varbinary": commonType = typeof(byte[]); break;case "varchar": commonType = typeof(string); break;case "xml": commonType = typeof(string); break;default: commonType = typeof(object); break;

}returncommonType;

}

}#endregion#>

public classconfig

{public static readonly string ConnectionString = "Data Source=(local);Initial Catalog=NFineBase;User ID=sa;Password=hjf19870810;";public static readonly string DbDatabase = "NFineBase";public static readonly string TableName = "Sys_Test";

}

#>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值