diff --git a/src/Parakeet.Tests/ParakeetTests.cs b/src/Parakeet.Tests/ParakeetTests.cs index 9f23c50..e9059cd 100644 --- a/src/Parakeet.Tests/ParakeetTests.cs +++ b/src/Parakeet.Tests/ParakeetTests.cs @@ -61,12 +61,27 @@ public void default_attribute_values() var attr = new ParakeetAttribute("MyName"); attr.Name.ShouldBe("MyName"); + attr.TableName.ShouldBeNull(); attr.Direction.ShouldBe(ParameterDirection.Input); attr.DbType.ShouldBeNull(); attr.Size.ShouldBeNull(); attr.Precision.ShouldBeNull(); attr.Scale.ShouldBeNull(); } + + [Fact] + public void optional_named_parameters() + { + var attr = new ParakeetAttribute(propertyName: "MyName", tableName: "dbo.MyTable", dbType: DbType.Binary); + + attr.Name.ShouldBe("MyName"); + attr.TableName.ShouldBe("dbo.MyTable"); + attr.Direction.ShouldBe(ParameterDirection.Input); + attr.DbType.ShouldBe(DbType.Binary); + attr.Size.ShouldBeNull(); + attr.Precision.ShouldBeNull(); + attr.Scale.ShouldBeNull(); + } } public class TestClass @@ -122,7 +137,7 @@ public class TestClass [ParakeetIgnore] public string Ignored { get; set; } - [Parakeet("NewName")] + [Parakeet(propertyName: "NewName")] public string OldName { get; set; } public NotEligible NotEligibleValue { get; set; } = new NotEligible(); diff --git a/src/Parakeet/Parakeet.csproj b/src/Parakeet/Parakeet.csproj index 98eccf4..5c1b586 100644 --- a/src/Parakeet/Parakeet.csproj +++ b/src/Parakeet/Parakeet.csproj @@ -12,7 +12,7 @@ dapper dynamicparameter $(Version) $(Version) - 1.0.5.0 + 1.1.0.0 true LICENSE https://github.com/scottoffen/parakeet diff --git a/src/Parakeet/ParakeetAttribute.cs b/src/Parakeet/ParakeetAttribute.cs index 7c805b6..c7fd504 100644 --- a/src/Parakeet/ParakeetAttribute.cs +++ b/src/Parakeet/ParakeetAttribute.cs @@ -1,5 +1,6 @@ using System; using System.Data; +using System.Runtime.InteropServices; namespace Parakeet { @@ -26,97 +27,27 @@ public class ParakeetAttribute : Attribute public ParakeetAttribute() { } - public ParakeetAttribute(string name) + public ParakeetAttribute(string propertyName = null, ParameterDirection direction = ParameterDirection.Input, string tableName = null, int size = -1, byte precision = 0, byte scale = 0) { - Name = name; - } - - public ParakeetAttribute(ParameterDirection direction) - { - Direction = direction; - } - - public ParakeetAttribute(DbType dbType) - { - DbType = dbType; - } - - public ParakeetAttribute(string name, ParameterDirection direction) - { - Name = name; - Direction = direction; - } - - public ParakeetAttribute(string name, DbType dbType) - { - Name = name; - DbType = dbType; - } - - public ParakeetAttribute(ParameterDirection direction, DbType dbType) - { - Direction = direction; - DbType = dbType; - } - - public ParakeetAttribute(string name, ParameterDirection direction, DbType dbType) - { - Name = name; - Direction = direction; - DbType = dbType; - } - - public ParakeetAttribute(string name, ParameterDirection direction, DbType dbType, int size) - { - Name = name; + Name = propertyName; Direction = direction; - DbType = dbType; - Size = size; - } + TableName = tableName; - public ParakeetAttribute(string name, ParameterDirection direction, DbType dbType, int size, byte precision) - { - Name = name; - Direction = direction; - DbType = dbType; - Size = size; - Precision = precision; + if (size > 0) Size = size; + if (precision > 0) Precision = precision; + if (scale > 0) Scale = scale; } - public ParakeetAttribute(string name, ParameterDirection direction, DbType dbType, int size, byte precision, byte scale) + public ParakeetAttribute(DbType dbType, string propertyName = null, ParameterDirection direction = ParameterDirection.Input, string tableName = null, int size = -1, byte precision = 0, byte scale = 0) { - Name = name; + Name = propertyName; Direction = direction; DbType = dbType; - Size = size; - Precision = precision; - Scale = scale; - } + TableName = tableName; - public ParakeetAttribute(DbType dbType, int size, byte precision, byte scale) - { - DbType = dbType; - Size = size; - Precision = precision; - Scale = scale; - } - - public ParakeetAttribute(string name, DbType dbType, int size, byte precision, byte scale) - { - Name = name; - DbType = dbType; - Size = size; - Precision = precision; - Scale = scale; - } - - public ParakeetAttribute(ParameterDirection direction, DbType dbType, int size, byte precision, byte scale) - { - Direction = direction; - DbType = dbType; - Size = size; - Precision = precision; - Scale = scale; + if (size > 0) Size = size; + if (precision > 0) Precision = precision; + if (scale > 0) Scale = scale; } } }