我正在尝试从 T 创建一个 sql 表,但是在将正确的 c# 类型转换为正确的 sql 类型时遇到了问题。
这是我的方法,
public static void CreateSqlTableFromT<T>(string connectionString) where T : new()
{
IList<PropertyInfo> properties = typeof(T).GetProperties().ToList();
StringBuilder query = new StringBuilder();
query.Append("CREATE TABLE ");
query.Append(typeof(T).Name);
query.Append(" ( ");
for (int i = 0; i < properties.Count; i++)
{
query.Append(properties[i]);
query.Append(" ");
query.Append(properties[i].GetType());
query.Append(", ");
}
if (properties.Count > 1) { query.Length -= 2; }
query.Append(")");
using (var con=new SqlConnection(connectionString))
{
con.Open();
SqlCommand createTableCommand = new SqlCommand(query.ToString(), con);
createTableCommand.ExecuteNonQuery();
}
}
在这一行中,我想将 C# 变量类型转换为等效的 SQL 类型
query.Append(properties[i].GetType());
c# 中有没有一种方法可以从 ac# 类型中获取匹配的 sql 类型,而无需执行大量 if 语句?
例如,ac# 十进制应转换为货币。