Commit 01acca6c authored by Nick Craver's avatar Nick Craver Committed by GitHub

Merge pull request #651 from pdesterlich/master

added firebird support
parents fe5c270a 16d86918
...@@ -49,6 +49,7 @@ public interface ITableNameMapper ...@@ -49,6 +49,7 @@ public interface ITableNameMapper
{"npgsqlconnection", new PostgresAdapter()}, {"npgsqlconnection", new PostgresAdapter()},
{"sqliteconnection", new SQLiteAdapter()}, {"sqliteconnection", new SQLiteAdapter()},
{"mysqlconnection", new MySqlAdapter()}, {"mysqlconnection", new MySqlAdapter()},
{"fbconnection", new FbAdapter() }
}; };
private static List<PropertyInfo> ComputedPropertiesCache(Type type) private static List<PropertyInfo> ComputedPropertiesCache(Type type)
...@@ -864,3 +865,35 @@ public void AppendColumnNameEqualsValue(StringBuilder sb, string columnName) ...@@ -864,3 +865,35 @@ public void AppendColumnNameEqualsValue(StringBuilder sb, string columnName)
sb.AppendFormat("\"{0}\" = @{1}", columnName, columnName); sb.AppendFormat("\"{0}\" = @{1}", columnName, columnName);
} }
} }
public partial class FbAdapter : ISqlAdapter
{
public int Insert(IDbConnection connection, IDbTransaction transaction, int? commandTimeout, string tableName, string columnList, string parameterList, IEnumerable<PropertyInfo> keyProperties, object entityToInsert)
{
var cmd = $"insert into {tableName} ({columnList}) values ({parameterList})";
connection.Execute(cmd, entityToInsert, transaction, commandTimeout);
var propertyInfos = keyProperties as PropertyInfo[] ?? keyProperties.ToArray();
var keyName = propertyInfos.First().Name;
var r = connection.Query($"SELECT FIRST 1 {keyName} ID FROM {tableName} ORDER BY {keyName} DESC", transaction: transaction, commandTimeout: commandTimeout);
var id = r.First().ID;
if (id == null) return 0;
if (!propertyInfos.Any()) return Convert.ToInt32(id);
var idp = propertyInfos.First();
idp.SetValue(entityToInsert, Convert.ChangeType(id, idp.PropertyType), null);
return Convert.ToInt32(id);
}
public void AppendColumnName(StringBuilder sb, string columnName)
{
sb.AppendFormat("{0}", columnName);
}
public void AppendColumnNameEqualsValue(StringBuilder sb, string columnName)
{
sb.AppendFormat("{0} = @{1}", columnName, columnName);
}
}
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment