提交 a01d46fc 编写于 作者: A Adam Schroder

Fix incorrect column name mapping and format command

上级 147f2c6a
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
<PropertyGroup> <PropertyGroup>
<Description>Provides an implementation to use Json.NET as the serializer for serialized columns</Description> <Description>Provides an implementation to use Json.NET as the serializer for serialized columns</Description>
<VersionPrefix>5.3.1</VersionPrefix> <VersionPrefix>5.3.2</VersionPrefix>
<TargetFrameworks>net461;netstandard2.0;netstandard2.1</TargetFrameworks> <TargetFrameworks>net461;netstandard2.0;netstandard2.1</TargetFrameworks>
<AssemblyName>NPoco.JsonNet</AssemblyName> <AssemblyName>NPoco.JsonNet</AssemblyName>
<PackageId>NPoco.JsonNet</PackageId> <PackageId>NPoco.JsonNet</PackageId>
......
...@@ -119,7 +119,7 @@ public override string FormatCommand(string sql, object[] args) ...@@ -119,7 +119,7 @@ public override string FormatCommand(string sql, object[] args)
} }
var p = new SqlParameter(); var p = new SqlParameter();
ParameterHelper.SetParameterValue(this, p, args[i]); ParameterHelper.SetParameterValue(this, p, value);
if (p.Size == 0 || p.SqlDbType == SqlDbType.UniqueIdentifier) if (p.Size == 0 || p.SqlDbType == SqlDbType.UniqueIdentifier)
{ {
if (value == null && (p.SqlDbType == SqlDbType.NVarChar || p.SqlDbType == SqlDbType.VarChar)) if (value == null && (p.SqlDbType == SqlDbType.NVarChar || p.SqlDbType == SqlDbType.VarChar))
......
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
<PropertyGroup> <PropertyGroup>
<Description>An extremely easy to use Micro-ORM supporting Sql Server.</Description> <Description>An extremely easy to use Micro-ORM supporting Sql Server.</Description>
<VersionPrefix>5.3.1</VersionPrefix> <VersionPrefix>5.3.2</VersionPrefix>
<TargetFrameworks>net461;netstandard2.0;netstandard2.1</TargetFrameworks> <TargetFrameworks>net461;netstandard2.0;netstandard2.1</TargetFrameworks>
<AssemblyName>NPoco.SqlServer</AssemblyName> <AssemblyName>NPoco.SqlServer</AssemblyName>
<PackageId>NPoco.SqlServer</PackageId> <PackageId>NPoco.SqlServer</PackageId>
......
...@@ -5,7 +5,7 @@ ...@@ -5,7 +5,7 @@
namespace NPoco namespace NPoco
{ {
public interface IBaseDatabase : IDisposable public interface IBaseDatabase : IDisposable, IDatabaseConfig
{ {
/// <summary> /// <summary>
/// The underlying connection object /// The underlying connection object
......
...@@ -7,7 +7,7 @@ ...@@ -7,7 +7,7 @@
namespace NPoco namespace NPoco
{ {
public interface IDatabase : IAsyncDatabase, IDatabaseQuery, IDatabaseConfig public interface IDatabase : IAsyncDatabase, IDatabaseQuery
{ {
/// <summary> /// <summary>
/// Insert POCO into the table, primary key and autoincrement specified /// Insert POCO into the table, primary key and autoincrement specified
......
...@@ -5,7 +5,7 @@ ...@@ -5,7 +5,7 @@
<TargetFrameworks>net461;netstandard2.0;netstandard2.1</TargetFrameworks> <TargetFrameworks>net461;netstandard2.0;netstandard2.1</TargetFrameworks>
<AssemblyName>NPoco</AssemblyName> <AssemblyName>NPoco</AssemblyName>
<PackageId>NPoco</PackageId> <PackageId>NPoco</PackageId>
<VersionPrefix>5.3.1</VersionPrefix> <VersionPrefix>5.3.2</VersionPrefix>
<Authors>Adam Schröder</Authors> <Authors>Adam Schröder</Authors>
<PackageTags>orm;sql;micro-orm;database;mvc</PackageTags> <PackageTags>orm;sql;micro-orm;database;mvc</PackageTags>
<PackageProjectUrl>https://github.com/schotime/NPoco</PackageProjectUrl> <PackageProjectUrl>https://github.com/schotime/NPoco</PackageProjectUrl>
......
...@@ -83,7 +83,7 @@ internal static PocoMember FindMember(IEnumerable<PocoMember> pocoMembers, strin ...@@ -83,7 +83,7 @@ internal static PocoMember FindMember(IEnumerable<PocoMember> pocoMembers, strin
{ {
return pocoMembers return pocoMembers
.Where(x => x.ReferenceType == ReferenceType.None) .Where(x => x.ReferenceType == ReferenceType.None)
.FirstOrDefault(x => IsPocoMemberEqual(x, prefix, name)); .FirstOrDefault(x => x.PocoColumn?.MemberInfoKey == name || IsPocoMemberEqual(x, prefix, name));
} }
private static bool IsPocoMemberEqual(PocoMember pocoMember, string prefix, string name) private static bool IsPocoMemberEqual(PocoMember pocoMember, string prefix, string name)
...@@ -91,9 +91,6 @@ private static bool IsPocoMemberEqual(PocoMember pocoMember, string prefix, stri ...@@ -91,9 +91,6 @@ private static bool IsPocoMemberEqual(PocoMember pocoMember, string prefix, stri
if (pocoMember.PocoColumn == null) if (pocoMember.PocoColumn == null)
return PropertyMapper.IsEqual(name, pocoMember.Name, false); return PropertyMapper.IsEqual(name, pocoMember.Name, false);
if (pocoMember.PocoColumn.MemberInfoKey == name)
return true;
if (string.Equals(pocoMember.PocoColumn.ColumnName, PocoDataBuilder.JoinStrings(prefix, name), StringComparison.OrdinalIgnoreCase)) if (string.Equals(pocoMember.PocoColumn.ColumnName, PocoDataBuilder.JoinStrings(prefix, name), StringComparison.OrdinalIgnoreCase))
return true; return true;
......
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Linq; using System.Linq;
using System.Threading.Tasks;
namespace NPoco namespace NPoco
{ {
public static class Snapshotter public static class Snapshotter
{ {
public static Snapshot<T> StartSnapshot<T>(this IDatabase d, T obj) public static Snapshot<T> StartSnapshot<T>(this IDatabaseConfig d, T obj)
{ {
return new Snapshot<T>(d.PocoDataFactory.ForType(obj.GetType()), obj); return new Snapshot<T>(d.PocoDataFactory.ForType(obj.GetType()), obj);
} }
...@@ -15,6 +16,11 @@ public static int Update<T>(this IDatabase d, T obj, Snapshot<T> snapshot) ...@@ -15,6 +16,11 @@ public static int Update<T>(this IDatabase d, T obj, Snapshot<T> snapshot)
{ {
return d.Update(obj, snapshot.UpdatedColumns()); return d.Update(obj, snapshot.UpdatedColumns());
} }
public static Task<int> UpdateAsync<T>(this IAsyncDatabase d, T obj, Snapshot<T> snapshot)
{
return d.UpdateAsync(obj, snapshot.UpdatedColumns());
}
} }
public class Snapshot<T> public class Snapshot<T>
......
...@@ -106,6 +106,13 @@ public void QueryWithWhereFalse() ...@@ -106,6 +106,13 @@ public void QueryWithWhereFalse()
Assert.AreEqual(0, users.Count); Assert.AreEqual(0, users.Count);
} }
[Test]
public void QueryWithWhereContainsNoValues()
{
var users = Database.Query<User>().Where(x => new int[] {}.Contains(x.UserId)).ToList();
Assert.AreEqual(0, users.Count);
}
[Test] [Test]
public void QueryWithWhereUserIdAndTrue() public void QueryWithWhereUserIdAndTrue()
{ {
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册