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());
多くのifステートメントを実行することなく、ac#タイプから一致するsqlタイプを取得する方法はc#にありますか?
たとえば、ac# decimal はお金に変換する必要があります。