0

我正在尝试从 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# 十进制应转换为货币。

4

0 回答 0