Commit b6cbb98a authored by Nick Craver's avatar Nick Craver

Merge branch 'pr/420'

parents 69b63884 b0cd0ef8
...@@ -368,7 +368,7 @@ private static string GetTableName(Type type) ...@@ -368,7 +368,7 @@ private static string GetTableName(Type type)
if (type.IsArray || type.IsGenericType()) if (type.IsArray || type.IsGenericType())
type = type.GetGenericArguments()[0]; type = type.GetGenericArguments()[0];
var keyProperties = KeyPropertiesCache(type); var keyProperties = KeyPropertiesCache(type).ToList(); //added ToList() due to issue #418, must work on a list copy
var explicitKeyProperties = ExplicitKeyPropertiesCache(type); var explicitKeyProperties = ExplicitKeyPropertiesCache(type);
if (!keyProperties.Any() && !explicitKeyProperties.Any()) if (!keyProperties.Any() && !explicitKeyProperties.Any())
throw new ArgumentException("Entity must have at least one [Key] or [ExplicitKey] property"); throw new ArgumentException("Entity must have at least one [Key] or [ExplicitKey] property");
...@@ -423,7 +423,7 @@ private static string GetTableName(Type type) ...@@ -423,7 +423,7 @@ private static string GetTableName(Type type)
if (type.IsArray || type.IsGenericType()) if (type.IsArray || type.IsGenericType())
type = type.GetGenericArguments()[0]; type = type.GetGenericArguments()[0];
var keyProperties = KeyPropertiesCache(type); var keyProperties = KeyPropertiesCache(type).ToList(); //added ToList() due to issue #418, must work on a list copy
var explicitKeyProperties = ExplicitKeyPropertiesCache(type); var explicitKeyProperties = ExplicitKeyPropertiesCache(type);
if (!keyProperties.Any() && !explicitKeyProperties.Any()) if (!keyProperties.Any() && !explicitKeyProperties.Any())
throw new ArgumentException("Entity must have at least one [Key] or [ExplicitKey] property"); throw new ArgumentException("Entity must have at least one [Key] or [ExplicitKey] property");
......
...@@ -4,7 +4,6 @@ ...@@ -4,7 +4,6 @@
using System.Linq; using System.Linq;
using Dapper.Contrib.Extensions; using Dapper.Contrib.Extensions;
using Xunit;
#if COREFX #if COREFX
using System.Reflection; using System.Reflection;
...@@ -15,6 +14,8 @@ ...@@ -15,6 +14,8 @@
#endif #endif
#if XUNIT2 #if XUNIT2
using FactAttribute = Dapper.Tests.Contrib.SkippableFactAttribute; using FactAttribute = Dapper.Tests.Contrib.SkippableFactAttribute;
#else
using Xunit;
#endif #endif
namespace Dapper.Tests.Contrib namespace Dapper.Tests.Contrib
...@@ -101,6 +102,35 @@ private IDbConnection GetOpenConnection() ...@@ -101,6 +102,35 @@ private IDbConnection GetOpenConnection()
return connection; return connection;
} }
[Fact]
public void Issue418()
{
using (var connection = GetOpenConnection())
{
//update first (will fail) then insert
//added for bug #418
var updateObject = new ObjectX
{
ObjectXId = Guid.NewGuid().ToString(),
Name = "Someone"
};
var updates = connection.Update(updateObject);
updates.IsFalse();
connection.DeleteAll<ObjectX>();
var objectXId = Guid.NewGuid().ToString();
var insertObject = new ObjectX
{
ObjectXId = objectXId,
Name = "Someone else"
};
connection.Insert(insertObject);
var list = connection.GetAll<ObjectX>();
list.Count().IsEqualTo(1);
}
}
/// <summary> /// <summary>
/// Tests for issue #351 /// Tests for issue #351
/// </summary> /// </summary>
...@@ -152,8 +182,9 @@ public void GetAllWithExplicitKey() ...@@ -152,8 +182,9 @@ public void GetAllWithExplicitKey()
var o1 = new ObjectX { ObjectXId = guid, Name = "Foo" }; var o1 = new ObjectX { ObjectXId = guid, Name = "Foo" };
connection.Insert(o1); connection.Insert(o1);
var objectXs = connection.GetAll<ObjectX>(); var objectXs = connection.GetAll<ObjectX>().ToList();
objectXs.Count().IsEqualTo(1); objectXs.Count.IsMoreThan(0);
objectXs.Count(x => x.ObjectXId== guid).IsEqualTo(1);
} }
} }
......
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