diff --git a/Dapper.Contrib.Tests/Tests.cs b/Dapper.Contrib.Tests/Tests.cs index 908c648038808e128676d59ac03c84d167addd65..7ac6172b16f0e31f2b3fde655c467b739e1ef75b 100644 --- a/Dapper.Contrib.Tests/Tests.cs +++ b/Dapper.Contrib.Tests/Tests.cs @@ -153,6 +153,19 @@ public void InsertGetUpdateDeleteWithExplicitKey() } } + public void GetAllWithExplicitKey() + { + using (var connection = GetOpenConnection()) + { + var guid = Guid.NewGuid().ToString(); + var o1 = new ObjectX { ObjectXId = guid, Name = "Foo" }; + connection.Insert(o1); + + var objectXs = connection.GetAll(); + objectXs.Count().IsEqualTo(1); + } + } + public void ShortIdentity() { using (var connection = GetOpenConnection()) diff --git a/Dapper.Contrib/SqlMapperExtensions.cs b/Dapper.Contrib/SqlMapperExtensions.cs index e318bafa72bc9eadaf7fcf14455b67ffca2c5be0..3fd7caa6472d56e1790aefdaf9825ec98bab1c1e 100644 --- a/Dapper.Contrib/SqlMapperExtensions.cs +++ b/Dapper.Contrib/SqlMapperExtensions.cs @@ -201,10 +201,11 @@ private static bool IsWriteable(PropertyInfo pi) if (!GetQueries.TryGetValue(cacheType.TypeHandle, out sql)) { var keys = KeyPropertiesCache(type); - if (keys.Count() > 1) - throw new DataException("Get only supports an entity with a single [Key] property"); - if (!keys.Any()) - throw new DataException("Get only supports en entity with a [Key] property"); + var explicitKeys = ExplicitKeyPropertiesCache(type); + if (keys.Count() > 1 || explicitKeys.Count() > 1) + throw new DataException("Get only supports an entity with a single [Key] or [ExplicitKey] property"); + if (!keys.Any() && !explicitKeys.Any()) + throw new DataException("Get only supports an entity with a [Key] or an [ExplicitKey] property"); var name = GetTableName(type);