Commit d0423de6 authored by Roman Gomolko's avatar Roman Gomolko

Added support of different ID column types to Dapper.Rainbow

From time to time ID column has types different to int. With this change
you could specify column type if it is different to int. Example:
public Table<MyDb, Guid> Users { get; set; }
parent c6735ebc
...@@ -24,7 +24,7 @@ namespace Dapper ...@@ -24,7 +24,7 @@ namespace Dapper
/// <typeparam name="TDatabase"></typeparam> /// <typeparam name="TDatabase"></typeparam>
public abstract class Database<TDatabase> : IDisposable where TDatabase : Database<TDatabase>, new() public abstract class Database<TDatabase> : IDisposable where TDatabase : Database<TDatabase>, new()
{ {
public class Table<T> public class Table<T, TId>
{ {
internal Database<TDatabase> database; internal Database<TDatabase> database;
internal string tableName; internal string tableName;
...@@ -68,7 +68,7 @@ public string TableName ...@@ -68,7 +68,7 @@ public string TableName
/// <param name="id"></param> /// <param name="id"></param>
/// <param name="data"></param> /// <param name="data"></param>
/// <returns></returns> /// <returns></returns>
public int Update(int id, dynamic data) public int Update(TId id, dynamic data)
{ {
List<string> paramNames = GetParamNames((object)data); List<string> paramNames = GetParamNames((object)data);
...@@ -88,7 +88,7 @@ public int Update(int id, dynamic data) ...@@ -88,7 +88,7 @@ public int Update(int id, dynamic data)
/// </summary> /// </summary>
/// <param name="id"></param> /// <param name="id"></param>
/// <returns></returns> /// <returns></returns>
public bool Delete(int id) public bool Delete(TId id)
{ {
return database.Execute("delete " + TableName + " where Id = @id", new { id }) > 0; return database.Execute("delete " + TableName + " where Id = @id", new { id }) > 0;
} }
...@@ -98,7 +98,7 @@ public bool Delete(int id) ...@@ -98,7 +98,7 @@ public bool Delete(int id)
/// </summary> /// </summary>
/// <param name="id"></param> /// <param name="id"></param>
/// <returns></returns> /// <returns></returns>
public T Get(int id) public T Get(TId id)
{ {
return database.Query<T>("select * from " + TableName + " where Id = @id", new { id }).FirstOrDefault(); return database.Query<T>("select * from " + TableName + " where Id = @id", new { id }).FirstOrDefault();
} }
...@@ -136,6 +136,13 @@ internal static List<string> GetParamNames(object o) ...@@ -136,6 +136,13 @@ internal static List<string> GetParamNames(object o)
} }
} }
public class Table<T> : Table<T, int> {
public Table(Database<TDatabase> database, string likelyTableName)
: base(database, likelyTableName)
{
}
}
DbConnection connection; DbConnection connection;
int commandTimeout; int commandTimeout;
DbTransaction transaction; DbTransaction transaction;
......
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