Commit fd8f3f1d authored by jedidja's avatar jedidja

Added INSERT for SQL Compact

parent 4326beac
...@@ -45,6 +45,11 @@ public string TableName ...@@ -45,6 +45,11 @@ public string TableName
} }
} }
/// <summary>
/// Insert a row into the db
/// </summary>
/// <param name="data">Either DynamicParameters or an anonymous type or concrete type</param>
/// <returns></returns>
/// <summary> /// <summary>
/// Insert a row into the db /// Insert a row into the db
/// </summary> /// </summary>
...@@ -55,12 +60,30 @@ public string TableName ...@@ -55,12 +60,30 @@ public string TableName
var o = (object)data; var o = (object)data;
List<string> paramNames = GetParamNames(o); List<string> paramNames = GetParamNames(o);
if (database.IsSqlCompact)
{
paramNames.Remove("Id");
}
string cols = string.Join(",", paramNames); string cols = string.Join(",", paramNames);
string cols_params = string.Join(",", paramNames.Select(p => "@" + p)); string cols_params = string.Join(",", paramNames.Select(p => "@" + p));
var sql = "set nocount on insert " + TableName + " (" + cols + ") values (" + cols_params + ") select cast(scope_identity() as int)";
if (database.IsSqlCompact)
{
var sql = "insert " + TableName + " (" + cols + ") values (" + cols_params + ")";
if (database.Execute(sql, o) != 1)
{
return null;
}
return (int)database.Query<decimal>("SELECT @@IDENTITY AS LastInsertedId").Single();
}
else
{
var sql = "set nocount on insert " + TableName + " (" + cols + ") values (" + cols_params + ") select cast(scope_identity() as int)";
return database.Query<int?>(sql, o).Single(); return database.Query<int?>(sql, o).Single();
} }
}
/// <summary> /// <summary>
/// Update a record in the DB /// Update a record in the DB
...@@ -139,7 +162,6 @@ private static List<string> GetParamNames(object o) ...@@ -139,7 +162,6 @@ private static List<string> GetParamNames(object o)
int commandTimeout; int commandTimeout;
DbTransaction transaction; DbTransaction transaction;
public static TDatabase Init(DbConnection connection, int commandTimeout) public static TDatabase Init(DbConnection connection, int commandTimeout)
{ {
TDatabase db = new TDatabase(); TDatabase db = new TDatabase();
...@@ -147,6 +169,13 @@ public static TDatabase Init(DbConnection connection, int commandTimeout) ...@@ -147,6 +169,13 @@ public static TDatabase Init(DbConnection connection, int commandTimeout)
return db; return db;
} }
public static TDatabase InitSqlCe(DbConnection connection)
{
var db = Init(connection, 0);
db.IsSqlCompact = true;
return db;
}
private static Action<Database<TDatabase>> tableConstructor; private static Action<Database<TDatabase>> tableConstructor;
private void InitDatabase(DbConnection connection, int commandTimeout) private void InitDatabase(DbConnection connection, int commandTimeout)
...@@ -161,6 +190,8 @@ private void InitDatabase(DbConnection connection, int commandTimeout) ...@@ -161,6 +190,8 @@ private void InitDatabase(DbConnection connection, int commandTimeout)
tableConstructor(this); tableConstructor(this);
} }
public bool IsSqlCompact { get; private set; }
public void BeginTransaction(IsolationLevel isolation = IsolationLevel.ReadCommitted) public void BeginTransaction(IsolationLevel isolation = IsolationLevel.ReadCommitted)
{ {
transaction = connection.BeginTransaction(isolation); transaction = connection.BeginTransaction(isolation);
......
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