mirror of
https://github.com/DapperLib/Dapper.git
synced 2026-10-18 14:27:47 +08:00
fd10fe7ccb
This eliminates the dual solutions and brings Contrib into the project.json fold. - Tests are ported to xUnit though SQLite is disabled on DNX due to Issue #375 (Interop loads fail in the VS runner and params are busted regardless). - Projects are consolidated down to what's currently possible with project.json. - Contrib moved to: Dapper.Contrib and Dapper.Tests.Contrib (so tests appear at the end, no other reason vs. Dapper.Contrib.Tests) - EF moved to: Dapper.EntityFramework(.StrongName) - Rainbow moved to: Dapper.Rainbow - SqlBuilder moved to: Dapper.SqlBuilder - Packages are removed since it's not current-tooling friendly to keep them (nor was it using them). - xUnit implemented in Contrib via abstracts - this allow us to very quickly add any database provider to the rig in a very concise way. - Contrib unit tests fixed in various places - they were not parallel-runner friendly - Nuspecs removed, since they aren't used anymore (to eliminate confusion) - Removed speed tests for libraries that aren't on current versions of .Net (what would we be comparing?) - Perf tests moved to Dapper.Tests (consolidation from Dapper.DNX.Tests), but aren't activated yet (no define)
54 lines
1.8 KiB
C#
54 lines
1.8 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
using System.Data.Common;
|
|
using System.Linq;
|
|
|
|
namespace Dapper
|
|
{
|
|
public abstract class SqlCompactDatabase<TDatabase> : Database<TDatabase> where TDatabase : Database<TDatabase>, new()
|
|
{
|
|
public class SqlCompactTable<T> : Table<T>
|
|
{
|
|
public SqlCompactTable(Database<TDatabase> database, string likelyTableName)
|
|
: base(database, likelyTableName)
|
|
{
|
|
}
|
|
|
|
/// <summary>
|
|
/// Insert a row into the db
|
|
/// </summary>
|
|
/// <param name="data">Either DynamicParameters or an anonymous type or concrete type</param>
|
|
/// <returns></returns>
|
|
public override int? Insert(dynamic data)
|
|
{
|
|
var o = (object)data;
|
|
List<string> paramNames = GetParamNames(o);
|
|
paramNames.Remove("Id");
|
|
|
|
string cols = string.Join(",", paramNames);
|
|
string colsParams = string.Join(",", paramNames.Select(p => "@" + p));
|
|
|
|
var sql = "insert " + TableName + " (" + cols + ") values (" + colsParams + ")";
|
|
if (database.Execute(sql, o) != 1)
|
|
{
|
|
return null;
|
|
}
|
|
|
|
return (int)database.Query<decimal>("SELECT @@IDENTITY AS LastInsertedId").Single();
|
|
}
|
|
}
|
|
|
|
public static TDatabase Init(DbConnection connection)
|
|
{
|
|
TDatabase db = new TDatabase();
|
|
db.InitDatabase(connection, 0);
|
|
return db;
|
|
}
|
|
|
|
internal override Action<TDatabase> CreateTableConstructorForTable()
|
|
{
|
|
return CreateTableConstructor(typeof(SqlCompactTable<>));
|
|
}
|
|
}
|
|
}
|