Compare commits
2 Commits
51dc61ab39
...
1.0.0.1
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
b589aabaa3 | ||
|
|
61081ae371 |
@@ -33,7 +33,9 @@
|
||||
</PropertyGroup>
|
||||
<ItemGroup>
|
||||
<Reference Include="Microsoft.CSharp" />
|
||||
<Reference Include="nunit.framework, Version=2.5.10.11092, Culture=neutral, PublicKeyToken=96d09a1eb7f44a77, processorArchitecture=MSIL" />
|
||||
<Reference Include="nunit.framework, Version=2.6.2.12296, Culture=neutral, PublicKeyToken=96d09a1eb7f44a77, processorArchitecture=MSIL">
|
||||
<HintPath>C:\Program Files (x86)\NUnit 2.6.2\bin\nunit.framework.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="System" />
|
||||
<Reference Include="System.Core" />
|
||||
<Reference Include="System.Data.SQLite">
|
||||
|
||||
@@ -45,7 +45,7 @@ namespace DynamORM.Tests.Helpers
|
||||
Debugger.Launch();
|
||||
}
|
||||
|
||||
/// <summary>Test anonymous type compatybility.</summary>
|
||||
/// <summary>Test anonymous type compatibility.</summary>
|
||||
[Test]
|
||||
public void TestAnonType()
|
||||
{
|
||||
@@ -59,14 +59,14 @@ namespace DynamORM.Tests.Helpers
|
||||
[Test]
|
||||
public void TestAnonTypeValue()
|
||||
{
|
||||
var a = new { x = 1, y = "bla bla" };
|
||||
var a = new { x = 1, y = "bla bla" };
|
||||
var b = new { x = 1, y = "bla bla" };
|
||||
|
||||
Assert.AreEqual(a, b);
|
||||
Assert.IsTrue(a.Equals(b));
|
||||
|
||||
|
||||
Dictionary<object, int> dict = new Dictionary<object, int>() { { a, 999 } };
|
||||
|
||||
|
||||
Assert.IsTrue(dict.ContainsKey(b));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -46,7 +46,7 @@ namespace DynamORM.Tests.Helpers
|
||||
[Column("login")]
|
||||
public string Login { get; set; }
|
||||
|
||||
/// <summary>Gets or sets first columnvalue.</summary>
|
||||
/// <summary>Gets or sets first column value.</summary>
|
||||
[Column("first")]
|
||||
public string First { get; set; }
|
||||
|
||||
|
||||
@@ -45,7 +45,7 @@ namespace DynamORM.Tests.Helpers
|
||||
/// <summary>Gets or sets login column value.</summary>
|
||||
public string login { get; set; }
|
||||
|
||||
/// <summary>Gets or sets first columnvalue.</summary>
|
||||
/// <summary>Gets or sets first column value.</summary>
|
||||
public string first { get; set; }
|
||||
|
||||
/// <summary>Gets or sets last column value.</summary>
|
||||
|
||||
@@ -65,12 +65,12 @@ namespace DynamORM.Tests.Modify
|
||||
[Test]
|
||||
public void TestInsertByArguments()
|
||||
{
|
||||
Assert.AreEqual(1, GetTestTable().Insert(code: 201, first: null, last: "Gagarin", email: "juri.gagarin@megacorp.com", quote: "bla, bla, bla"));
|
||||
Assert.AreEqual(1, GetTestTable().Insert(code: "201", first: null, last: "Gagarin", email: "juri.gagarin@megacorp.com", quote: "bla, bla, bla"));
|
||||
|
||||
// Verify
|
||||
var o = GetTestTable().Single(code: 201);
|
||||
var o = GetTestTable().Single(code: "201");
|
||||
Assert.Less(200, o.id);
|
||||
Assert.AreEqual("201", o.code);
|
||||
Assert.AreEqual("201", o.code.ToString());
|
||||
Assert.AreEqual(null, o.first);
|
||||
Assert.AreEqual("Gagarin", o.last);
|
||||
Assert.AreEqual("juri.gagarin@megacorp.com", o.email);
|
||||
@@ -82,12 +82,12 @@ namespace DynamORM.Tests.Modify
|
||||
[Test]
|
||||
public void TestInsertByDynamicObjects()
|
||||
{
|
||||
Assert.AreEqual(1, GetTestTable().Insert(values: new { code = 202, first = DBNull.Value, last = "Gagarin", email = "juri.gagarin@megacorp.com", quote = "bla, bla, bla" }));
|
||||
Assert.AreEqual(1, GetTestTable().Insert(values: new { code = "202", first = DBNull.Value, last = "Gagarin", email = "juri.gagarin@megacorp.com", quote = "bla, bla, bla" }));
|
||||
|
||||
// Verify
|
||||
var o = GetTestTable().Single(code: 202);
|
||||
var o = GetTestTable().Single(code: "202");
|
||||
Assert.Less(200, o.id);
|
||||
Assert.AreEqual("202", o.code);
|
||||
Assert.AreEqual("202", o.code.ToString());
|
||||
Assert.AreEqual(null, o.first);
|
||||
Assert.AreEqual("Gagarin", o.last);
|
||||
Assert.AreEqual("juri.gagarin@megacorp.com", o.email);
|
||||
@@ -112,9 +112,9 @@ namespace DynamORM.Tests.Modify
|
||||
}));
|
||||
|
||||
// Verify
|
||||
var o = u.Single(code: 203);
|
||||
var o = u.Single(code: "203");
|
||||
Assert.Less(200, o.id);
|
||||
Assert.AreEqual("203", o.code);
|
||||
Assert.AreEqual("203", o.code.ToString());
|
||||
Assert.AreEqual(null, o.first);
|
||||
Assert.AreEqual("Gagarin", o.last);
|
||||
Assert.AreEqual("juri.gagarin@megacorp.com", o.email);
|
||||
@@ -139,9 +139,9 @@ namespace DynamORM.Tests.Modify
|
||||
}));
|
||||
|
||||
// Verify
|
||||
var o = u.Single(code: 204);
|
||||
var o = u.Single(code: "204");
|
||||
Assert.Less(200, o.id);
|
||||
Assert.AreEqual("204", o.code);
|
||||
Assert.AreEqual("204", o.code.ToString());
|
||||
Assert.AreEqual(null, o.first);
|
||||
Assert.AreEqual("Gagarin", o.last);
|
||||
Assert.AreEqual("juri.gagarin@megacorp.com", o.email);
|
||||
@@ -157,12 +157,12 @@ namespace DynamORM.Tests.Modify
|
||||
[Test]
|
||||
public void TestUpdateByArguments()
|
||||
{
|
||||
Assert.AreEqual(1, GetTestTable().Update(id: 1, code: 201, first: null, last: "Gagarin", email: "juri.gagarin@megacorp.com", quote: "bla, bla, bla"));
|
||||
Assert.AreEqual(1, GetTestTable().Update(id: 1, code: "201", first: null, last: "Gagarin", email: "juri.gagarin@megacorp.com", quote: "bla, bla, bla"));
|
||||
|
||||
// Verify
|
||||
var o = GetTestTable().Single(code: 201);
|
||||
var o = GetTestTable().Single(code: "201");
|
||||
Assert.AreEqual(1, o.id);
|
||||
Assert.AreEqual("201", o.code);
|
||||
Assert.AreEqual("201", o.code.ToString());
|
||||
Assert.AreEqual(null, o.first);
|
||||
Assert.AreEqual("Gagarin", o.last);
|
||||
Assert.AreEqual("juri.gagarin@megacorp.com", o.email);
|
||||
@@ -174,12 +174,12 @@ namespace DynamORM.Tests.Modify
|
||||
[Test]
|
||||
public void TestUpdateByDynamicObject()
|
||||
{
|
||||
Assert.AreEqual(1, GetTestTable().Update(update: new { id = 2, code = 202, first = DBNull.Value, last = "Gagarin", email = "juri.gagarin@megacorp.com", quote = "bla, bla, bla" }));
|
||||
Assert.AreEqual(1, GetTestTable().Update(update: new { id = 2, code = "202", first = DBNull.Value, last = "Gagarin", email = "juri.gagarin@megacorp.com", quote = "bla, bla, bla" }));
|
||||
|
||||
// Verify
|
||||
var o = GetTestTable().Single(code: 202);
|
||||
var o = GetTestTable().Single(code: "202");
|
||||
Assert.AreEqual(2, o.id);
|
||||
Assert.AreEqual("202", o.code);
|
||||
Assert.AreEqual("202", o.code.ToString());
|
||||
Assert.AreEqual(null, o.first);
|
||||
Assert.AreEqual("Gagarin", o.last);
|
||||
Assert.AreEqual("juri.gagarin@megacorp.com", o.email);
|
||||
@@ -204,9 +204,9 @@ namespace DynamORM.Tests.Modify
|
||||
}));
|
||||
|
||||
// Verify
|
||||
var o = u.Single(code: 203);
|
||||
var o = u.Single(code: "203");
|
||||
Assert.AreEqual(3, o.id);
|
||||
Assert.AreEqual("203", o.code);
|
||||
Assert.AreEqual("203", o.code.ToString());
|
||||
Assert.AreEqual(null, o.first);
|
||||
Assert.AreEqual("Gagarin", o.last);
|
||||
Assert.AreEqual("juri.gagarin@megacorp.com", o.email);
|
||||
@@ -231,9 +231,9 @@ namespace DynamORM.Tests.Modify
|
||||
}));
|
||||
|
||||
// Verify
|
||||
var o = u.Single(code: 204);
|
||||
var o = u.Single(code: "204");
|
||||
Assert.AreEqual(4, o.id);
|
||||
Assert.AreEqual("204", o.code);
|
||||
Assert.AreEqual("204", o.code.ToString());
|
||||
Assert.AreEqual(null, o.first);
|
||||
Assert.AreEqual("Gagarin", o.last);
|
||||
Assert.AreEqual("juri.gagarin@megacorp.com", o.email);
|
||||
@@ -245,12 +245,12 @@ namespace DynamORM.Tests.Modify
|
||||
[Test]
|
||||
public void TestUpdateByDynamicObjects()
|
||||
{
|
||||
Assert.AreEqual(1, GetTestTable().Update(values: new { code = 205, first = DBNull.Value, last = "Gagarin", email = "juri.gagarin@megacorp.com", quote = "bla, bla, bla" }, where: new { id = 5 }));
|
||||
Assert.AreEqual(1, GetTestTable().Update(values: new { code = "205", first = DBNull.Value, last = "Gagarin", email = "juri.gagarin@megacorp.com", quote = "bla, bla, bla" }, where: new { id = 5 }));
|
||||
|
||||
// Verify
|
||||
var o = GetTestTable().Single(code: 205);
|
||||
var o = GetTestTable().Single(code: "205");
|
||||
Assert.AreEqual(5, o.id);
|
||||
Assert.AreEqual("205", o.code);
|
||||
Assert.AreEqual("205", o.code.ToString());
|
||||
Assert.AreEqual(null, o.first);
|
||||
Assert.AreEqual("Gagarin", o.last);
|
||||
Assert.AreEqual("juri.gagarin@megacorp.com", o.email);
|
||||
@@ -275,9 +275,9 @@ namespace DynamORM.Tests.Modify
|
||||
}, id: 6));
|
||||
|
||||
// Verify
|
||||
var o = u.Single(code: 206);
|
||||
var o = u.Single(code: "206");
|
||||
Assert.AreEqual(6, o.id);
|
||||
Assert.AreEqual("206", o.code);
|
||||
Assert.AreEqual("206", o.code.ToString());
|
||||
Assert.AreEqual(null, o.first);
|
||||
Assert.AreEqual("Gagarin", o.last);
|
||||
Assert.AreEqual("juri.gagarin@megacorp.com", o.email);
|
||||
@@ -302,9 +302,9 @@ namespace DynamORM.Tests.Modify
|
||||
}, id: 7));
|
||||
|
||||
// Verify
|
||||
var o = u.Single(code: 207);
|
||||
var o = u.Single(code: "207");
|
||||
Assert.AreEqual(7, o.id);
|
||||
Assert.AreEqual("207", o.code);
|
||||
Assert.AreEqual("207", o.code.ToString());
|
||||
Assert.AreEqual(null, o.first);
|
||||
Assert.AreEqual("Gagarin", o.last);
|
||||
Assert.AreEqual("juri.gagarin@megacorp.com", o.email);
|
||||
@@ -320,10 +320,10 @@ namespace DynamORM.Tests.Modify
|
||||
[Test]
|
||||
public void TestDeleteByArguments()
|
||||
{
|
||||
Assert.AreEqual(1, GetTestTable().Delete(code: 10));
|
||||
Assert.AreEqual(1, GetTestTable().Delete(code: "10"));
|
||||
|
||||
// Verify
|
||||
Assert.AreEqual(0, GetTestTable().Count(code: 10));
|
||||
Assert.AreEqual(0, GetTestTable().Count(code: "10"));
|
||||
}
|
||||
|
||||
/// <summary>Test row deleting by dynamic objects (all except ID should be ignored).</summary>
|
||||
@@ -380,7 +380,7 @@ namespace DynamORM.Tests.Modify
|
||||
[Test]
|
||||
public void TestDeleteyDynamicObjectWhere()
|
||||
{
|
||||
Assert.AreEqual(1, GetTestTable().Delete(where: new { id = 14, code = 14 }));
|
||||
Assert.AreEqual(1, GetTestTable().Delete(where: new { id = 14, code = "14" }));
|
||||
|
||||
// Verify
|
||||
Assert.AreEqual(0, GetTestTable().Count(id: 14));
|
||||
|
||||
@@ -358,7 +358,7 @@ namespace DynamORM.Tests.Select
|
||||
Assert.AreEqual(200, GetTestTable().Count<T>(columns: "id"));
|
||||
}
|
||||
|
||||
/// <summary>Test count with in steatement.</summary>
|
||||
/// <summary>Test count with in statement.</summary>
|
||||
[Test]
|
||||
public virtual void TestGenericSelectInEnumerableCount()
|
||||
{
|
||||
@@ -369,7 +369,7 @@ namespace DynamORM.Tests.Select
|
||||
}));
|
||||
}
|
||||
|
||||
/// <summary>Test count with in steatement.</summary>
|
||||
/// <summary>Test count with in statement.</summary>
|
||||
[Test]
|
||||
public virtual void TestGenericSelectInArrayCount()
|
||||
{
|
||||
@@ -585,7 +585,7 @@ namespace DynamORM.Tests.Select
|
||||
Assert.AreEqual(26, GetTestTable().Count<T>(where: new DynamicColumn("id").Between(75, 100)));
|
||||
}
|
||||
|
||||
/// <summary>Test generic where expression in params.</summary>
|
||||
/// <summary>Test generic where expression in parameters.</summary>
|
||||
[Test]
|
||||
public virtual void TestGenericWhereIn1()
|
||||
{
|
||||
|
||||
@@ -86,7 +86,7 @@ namespace DynamORM.Tests
|
||||
|
||||
#region DynamORM Initialization
|
||||
|
||||
/// <summary>Create <see cref="DynamicDatabase"/> with default otions for SQLite.</summary>
|
||||
/// <summary>Create <see cref="DynamicDatabase"/> with default options for SQLite.</summary>
|
||||
public void CreateDynamicDatabase()
|
||||
{
|
||||
CreateDynamicDatabase(
|
||||
|
||||
@@ -95,7 +95,7 @@ namespace DynamORM.Builders
|
||||
/// <returns>Builder instance.</returns>
|
||||
public virtual T Table<Y>()
|
||||
{
|
||||
return Table(typeof(T));
|
||||
return Table(typeof(Y));
|
||||
}
|
||||
|
||||
/// <summary>Set table name.</summary>
|
||||
@@ -201,11 +201,12 @@ namespace DynamORM.Builders
|
||||
{
|
||||
col = Schema.TryGetNullable(colName.ToLower());
|
||||
|
||||
if (!col.HasValue)
|
||||
throw new InvalidOperationException(string.Format("Column '{0}' not found in schema, can't use universal approach.", con.Key));
|
||||
if (!col.HasValue || !col.Value.IsKey)
|
||||
continue;
|
||||
/*throw new InvalidOperationException(string.Format("Column '{0}' not found in schema, can't use universal approach.", condition.Key));
|
||||
|
||||
if (!col.Value.IsKey)
|
||||
continue;
|
||||
continue;*/
|
||||
|
||||
colName = col.Value.Name;
|
||||
}
|
||||
@@ -271,7 +272,7 @@ namespace DynamORM.Builders
|
||||
else
|
||||
throw new InvalidOperationException("NULL can only be compared by IS or IS NOT operator.");
|
||||
|
||||
#endregion
|
||||
#endregion Null operators
|
||||
}
|
||||
else if (v.Operator != DynamicColumn.CompareOperator.In &&
|
||||
v.Operator != DynamicColumn.CompareOperator.Between)
|
||||
@@ -293,7 +294,7 @@ namespace DynamORM.Builders
|
||||
|
||||
command.AddParameter(this, v);
|
||||
|
||||
#endregion
|
||||
#endregion Standard operators
|
||||
}
|
||||
else if (((object)v.Value).GetType().IsCollection() || v.Value is IEnumerable<object>)
|
||||
{
|
||||
@@ -336,7 +337,7 @@ namespace DynamORM.Builders
|
||||
else
|
||||
throw new InvalidOperationException("BETWEEN must have two values.");
|
||||
|
||||
#endregion
|
||||
#endregion Between operator
|
||||
}
|
||||
else if (v.Operator == DynamicColumn.CompareOperator.In)
|
||||
{
|
||||
@@ -376,12 +377,12 @@ namespace DynamORM.Builders
|
||||
if (v.EndBlock)
|
||||
sb.Append(")");
|
||||
|
||||
#endregion
|
||||
#endregion In operator
|
||||
}
|
||||
else
|
||||
throw new Exception("BAZINGA. You have reached unreachable code.");
|
||||
|
||||
#endregion
|
||||
#endregion In or Between operator
|
||||
}
|
||||
else
|
||||
throw new InvalidOperationException(
|
||||
|
||||
@@ -86,7 +86,9 @@ namespace DynamORM
|
||||
#region Constructors
|
||||
|
||||
/// <summary>Initializes a new instance of the <see cref="DynamicColumn" /> class.</summary>
|
||||
public DynamicColumn() { }
|
||||
public DynamicColumn()
|
||||
{
|
||||
}
|
||||
|
||||
/// <summary>Initializes a new instance of the <see cref="DynamicColumn" /> class.</summary>
|
||||
/// <remarks>Constructor provided for easier object creation in queries.</remarks>
|
||||
@@ -341,7 +343,7 @@ namespace DynamORM
|
||||
/// <summary>Sets the begin block flag.</summary>
|
||||
/// <param name="begin">If set to <c>true</c> [begin].</param>
|
||||
/// <returns>Returns self.</returns>
|
||||
public DynamicColumn SetBeginBlock(bool begin)
|
||||
public DynamicColumn SetBeginBlock(bool begin = true)
|
||||
{
|
||||
BeginBlock = begin;
|
||||
return this;
|
||||
@@ -350,7 +352,7 @@ namespace DynamORM
|
||||
/// <summary>Sets the end block flag.</summary>
|
||||
/// <param name="end">If set to <c>true</c> [end].</param>
|
||||
/// <returns>Returns self.</returns>
|
||||
public DynamicColumn SetEndBlock(bool end)
|
||||
public DynamicColumn SetEndBlock(bool end = true)
|
||||
{
|
||||
EndBlock = end;
|
||||
return this;
|
||||
@@ -359,7 +361,7 @@ namespace DynamORM
|
||||
/// <summary>Sets the or flag.</summary>
|
||||
/// <param name="or">If set to <c>true</c> [or].</param>
|
||||
/// <returns>Returns self.</returns>
|
||||
public DynamicColumn SetOr(bool or)
|
||||
public DynamicColumn SetOr(bool or = true)
|
||||
{
|
||||
Or = or;
|
||||
return this;
|
||||
@@ -436,6 +438,13 @@ namespace DynamORM
|
||||
|
||||
#region ToSQL
|
||||
|
||||
internal string ToSQLSelectColumn(DynamicDatabase db)
|
||||
{
|
||||
StringBuilder sb = new StringBuilder();
|
||||
ToSQLSelectColumn(db, sb);
|
||||
return sb.ToString();
|
||||
}
|
||||
|
||||
internal void ToSQLSelectColumn(DynamicDatabase db, StringBuilder sb)
|
||||
{
|
||||
string column = ColumnName == "*" ? "*" : ColumnName;
|
||||
@@ -462,11 +471,25 @@ namespace DynamORM
|
||||
sb.AppendFormat(" AS {0}", alias);
|
||||
}
|
||||
|
||||
internal string ToSQLGroupByColumn(DynamicDatabase db)
|
||||
{
|
||||
StringBuilder sb = new StringBuilder();
|
||||
ToSQLGroupByColumn(db, sb);
|
||||
return sb.ToString();
|
||||
}
|
||||
|
||||
internal void ToSQLGroupByColumn(DynamicDatabase db, StringBuilder sb)
|
||||
{
|
||||
sb.Append(db.DecorateName(ColumnName));
|
||||
}
|
||||
|
||||
internal string ToSQLOrderByColumn(DynamicDatabase db)
|
||||
{
|
||||
StringBuilder sb = new StringBuilder();
|
||||
ToSQLOrderByColumn(db, sb);
|
||||
return sb.ToString();
|
||||
}
|
||||
|
||||
internal void ToSQLOrderByColumn(DynamicDatabase db, StringBuilder sb)
|
||||
{
|
||||
if (!string.IsNullOrEmpty(Alias))
|
||||
|
||||
@@ -101,7 +101,9 @@ namespace DynamORM
|
||||
/// Connection object.</summary>
|
||||
/// <remarks>Does nothing. <see cref="DynamicDatabase"/> handles
|
||||
/// opening connections.</remarks>
|
||||
public void Open() { }
|
||||
public void Open()
|
||||
{
|
||||
}
|
||||
|
||||
/// <summary>Closes the connection to the database.</summary>
|
||||
/// <remarks>Does nothing. <see cref="DynamicDatabase"/> handles
|
||||
@@ -109,7 +111,9 @@ namespace DynamORM
|
||||
/// It will close if this is multi connection configuration, otherwise
|
||||
/// it will stay open until <see cref="DynamicDatabase"/> is not
|
||||
/// disposed.</remarks>
|
||||
public void Close() { }
|
||||
public void Close()
|
||||
{
|
||||
}
|
||||
|
||||
/// <summary>Gets or sets the string used to open a database.</summary>
|
||||
/// <remarks>Changing connection string operation is not supported in <c>DynamORM</c>.
|
||||
|
||||
@@ -1094,7 +1094,7 @@ namespace DynamORM
|
||||
/// <typeparam name="T">Type to parse to.</typeparam>
|
||||
/// <param name="value">Value to parse.</param>
|
||||
/// <param name="handler">Handler of a try parse method.</param>
|
||||
/// <returns>Returns <c>true</c> if conversion was sucessfull.</returns>
|
||||
/// <returns>Returns <c>true</c> if conversion was successful.</returns>
|
||||
public static T? TryParse<T>(this string value, TryParseHandler<T> handler) where T : struct
|
||||
{
|
||||
if (String.IsNullOrEmpty(value))
|
||||
@@ -1113,7 +1113,7 @@ namespace DynamORM
|
||||
/// <param name="value">Value to parse.</param>
|
||||
/// <param name="defaultValue">Default value of a result.</param>
|
||||
/// <param name="handler">Handler of a try parse method.</param>
|
||||
/// <returns>Returns <c>true</c> if conversion was sucessfull.</returns>
|
||||
/// <returns>Returns <c>true</c> if conversion was successful.</returns>
|
||||
public static T TryParseDefault<T>(this string value, T defaultValue, TryParseHandler<T> handler)
|
||||
{
|
||||
if (String.IsNullOrEmpty(value))
|
||||
@@ -1131,7 +1131,7 @@ namespace DynamORM
|
||||
/// <typeparam name="T">Type which implements this function.</typeparam>
|
||||
/// <param name="value">Value to parse.</param>
|
||||
/// <param name="result">Resulting value.</param>
|
||||
/// <returns>Returns <c>true</c> if conversion was sucessfull.</returns>
|
||||
/// <returns>Returns <c>true</c> if conversion was successful.</returns>
|
||||
public delegate bool TryParseHandler<T>(string value, out T result);
|
||||
|
||||
#endregion TryParse extensions
|
||||
|
||||
Reference in New Issue
Block a user