Skip to content

Commit f686227

Browse files
committed
1. add ParamAttribute.FieldType
1 parent 68e8dec commit f686227

File tree

9 files changed

+47
-22
lines changed

9 files changed

+47
-22
lines changed

src/SmartSql.DyRepository/Annotations/ParamAttribute.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,5 +16,6 @@ public ParamAttribute(string name)
1616
/// DbDataParameter.Name
1717
/// </summary>
1818
public String Name { get; set; }
19+
public Type FieldType { get; set; }
1920
}
2021
}

src/SmartSql.DyRepository/EmitRepositoryBuilder.cs

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -164,8 +164,7 @@ private void BuildMethod(Type interfaceType, TypeBuilder typeBuilder, MethodInfo
164164
ilGen.LoadType(reqParam.ParameterType);
165165
ilGen.New(SqlParameterType.Ctor.SqlParameter);
166166
ilGen.Dup();
167-
var column = reqParam.GetCustomAttribute<ColumnAttribute>();
168-
var getHandlerMethod = column?.FieldType != null ? TypeHandlerCacheType.GetHandlerMethod(reqParam.ParameterType, column?.FieldType)
167+
var getHandlerMethod = paramAttr?.FieldType != null ? TypeHandlerCacheType.GetHandlerMethod(reqParam.ParameterType, paramAttr?.FieldType)
169168
: PropertyTypeHandlerCacheType.GetHandlerMethod(reqParam.ParameterType);
170169
ilGen.Call(getHandlerMethod);
171170
ilGen.Call(SqlParameterType.Method.SetTypeHandler);

src/SmartSql.Test.Unit/DI/DITest.cs

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
using Microsoft.Extensions.Logging;
66
using SmartSql.DataSource;
77
using SmartSql.DbSession;
8+
using SmartSql.Test.Repositories;
89
using SmartSql.Test.Unit.DyRepository;
910
using Xunit;
1011

@@ -57,10 +58,10 @@ public void AddRepositoryFromAssembly()
5758
services.AddSmartSql()
5859
.AddRepositoryFromAssembly(o =>
5960
{
60-
o.AssemblyString = "SmartSql.Test.Unit";
61+
o.AssemblyString = "SmartSql.Test";
6162
o.Filter = (type) =>
6263
{
63-
return type.Namespace == "SmartSql.Test.Unit.DyRepository";
64+
return type.Namespace == "SmartSql.Test.Repositories";
6465
};
6566
});
6667
var serviceProvider = services.BuildServiceProvider();
@@ -75,10 +76,10 @@ public void AddRepositoryFromAssembly_Alias()
7576
.AddRepositoryFromAssembly(o =>
7677
{
7778
o.SmartSqlAlias = "AddRepositoryFromAssembly_Alias";
78-
o.AssemblyString = "SmartSql.Test.Unit";
79+
o.AssemblyString = "SmartSql.Test";
7980
o.Filter = (type) =>
8081
{
81-
return type.Namespace == "SmartSql.Test.Unit.DyRepository";
82+
return type.Namespace == "SmartSql.Test.Repositories";
8283
};
8384
});
8485
var serviceProvider = services.BuildServiceProvider();
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
using System;
2+
using System.Collections.Generic;
3+
using System.Text;
4+
using SmartSql.Test.Repositories;
5+
using Xunit;
6+
7+
namespace SmartSql.Test.Unit.DyRepository
8+
{
9+
public class AllPrimitiveRepositoryTest : DyRepositoryTest
10+
{
11+
[Fact]
12+
public void Build()
13+
{
14+
var smartSqlBuilder = new SmartSqlBuilder().UseXmlConfig().Build();
15+
var repositoryType = RepositoryBuilder.Build(typeof(IAllPrimitiveRepository), smartSqlBuilder.SmartSqlConfig);
16+
Assert.NotNull(repositoryType);
17+
}
18+
}
19+
}
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
using System;
2+
using System.Collections.Generic;
3+
using System.Text;
4+
using SmartSql.DyRepository;
5+
6+
namespace SmartSql.Test.Unit.DyRepository
7+
{
8+
public class DyRepositoryTest
9+
{
10+
protected IRepositoryBuilder RepositoryBuilder { get; set; }
11+
protected IRepositoryFactory RepositoryFactory { get; set; }
12+
public DyRepositoryTest()
13+
{
14+
RepositoryBuilder = new EmitRepositoryBuilder(null, null, Microsoft.Extensions.Logging.Abstractions.NullLogger.Instance);
15+
RepositoryFactory = new RepositoryFactory(RepositoryBuilder, Microsoft.Extensions.Logging.Abstractions.NullLogger.Instance);
16+
}
17+
}
18+
}

src/SmartSql.Test.Unit/DyRepository/IAllPrimitiveRepository.cs

Lines changed: 0 additions & 14 deletions
This file was deleted.

src/SmartSql.Test.Unit/DyRepository/RepositoryBuilder_Test.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
using System;
44
using System.Collections.Generic;
55
using System.Text;
6+
using SmartSql.Test.Repositories;
67
using Xunit;
78

89
namespace SmartSql.Test.Unit.DyRepository
@@ -35,7 +36,6 @@ public void CreateInstance()
3536

3637
}
3738

38-
3939
[Fact]
4040
public void NoMapperRepository_GetGuidFromDb()
4141
{

src/SmartSql.Test/Repositories/IAllPrimitiveRepository.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,5 +10,6 @@ public interface IAllPrimitiveRepository
1010
{
1111
[Statement(Sql = "SELECT Top (@Taken) T.* From T_AllPrimitive T With(NoLock)")]
1212
IEnumerable<AllPrimitive> Query([Param("Taken")]int taken);
13+
long Insert(AllPrimitive entity);
1314
}
1415
}

src/SmartSql.Test.Unit/DyRepository/INoMapperRepository.cs renamed to src/SmartSql.Test/Repositories/INoMapperRepository.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
using System.Collections.Generic;
55
using System.Text;
66

7-
namespace SmartSql.Test.Unit.DyRepository
7+
namespace SmartSql.Test.Repositories
88
{
99
public interface INoMapperRepository
1010
{

0 commit comments

Comments
 (0)