This commit is contained in:
grzegorz.russek
2022-03-04 06:46:41 +00:00
parent d83ac6307e
commit b5cb4ba17f
5 changed files with 84 additions and 31 deletions

View File

@@ -52,9 +52,6 @@
<Compile Include="Program.cs" /> <Compile Include="Program.cs" />
<Compile Include="Properties\AssemblyInfo.cs" /> <Compile Include="Properties\AssemblyInfo.cs" />
</ItemGroup> </ItemGroup>
<ItemGroup>
<None Include="app.config" />
</ItemGroup>
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" /> <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
<!-- To modify your build process, add your task inside one of the targets below and uncomment it. <!-- To modify your build process, add your task inside one of the targets below and uncomment it.
Other similar extension points exist, see Microsoft.Common.targets. Other similar extension points exist, see Microsoft.Common.targets.

View File

@@ -5465,7 +5465,7 @@ namespace DynamORM
mainResult = cache.EnumerateReader().ToList(); mainResult = cache.EnumerateReader().ToList();
} }
else if (argType.IsValueType) else if (argType.IsValueType || types[0] == typeof(string))
{ {
Type listType = typeof(List<>).MakeGenericType(new Type[] { argType }); Type listType = typeof(List<>).MakeGenericType(new Type[] { argType });
IList listInstance = (IList)Activator.CreateInstance(listType); IList listInstance = (IList)Activator.CreateInstance(listType);
@@ -5481,6 +5481,25 @@ namespace DynamORM
mainResult = listInstance; mainResult = listInstance;
} }
else if (types[0] == typeof(Guid))
{
Type listType = typeof(List<>).MakeGenericType(new Type[] { argType });
IList listInstance = (IList)Activator.CreateInstance(listType);
object defVal = listType.GetDefaultValue();
IDataReader cache = null;
using (IDataReader rdr = cmd.ExecuteReader())
cache = rdr.CachedReader();
while (cache.Read())
{
if (cache[0] == DBNull.Value && Guid.TryParse(cache[0].ToString(), out Guid g))
listInstance.Add(g);
}
mainResult = listInstance;
}
else else
{ {
DynamicTypeMap mapper = DynamicMapperCache.GetMapper(argType); DynamicTypeMap mapper = DynamicMapperCache.GetMapper(argType);
@@ -5494,12 +5513,18 @@ namespace DynamORM
mainResult = cache.EnumerateReader().MapEnumerable(argType).ToList(); mainResult = cache.EnumerateReader().MapEnumerable(argType).ToList();
} }
} }
else if (types[0].IsValueType) else if (types[0].IsValueType || types[0] == typeof(string))
{ {
mainResult = cmd.ExecuteScalar(); mainResult = cmd.ExecuteScalar();
if (mainResult != DBNull.Value) if (mainResult != DBNull.Value)
mainResult = types[0].CastObject(mainResult); mainResult = types[0].CastObject(mainResult);
} }
else if (types[0] == typeof(Guid))
{
mainResult = cmd.ExecuteScalar();
if (mainResult != DBNull.Value && Guid.TryParse(mainResult.ToString(), out Guid g))
mainResult = g;
}
else else
{ {
DynamicTypeMap mapper = DynamicMapperCache.GetMapper(types[0]); DynamicTypeMap mapper = DynamicMapperCache.GetMapper(types[0]);

View File

@@ -55,13 +55,13 @@ Global
{A64D2052-D0CD-488E-BF05-E5952615D926}.Release|x86.Build.0 = Release|x86 {A64D2052-D0CD-488E-BF05-E5952615D926}.Release|x86.Build.0 = Release|x86
{F747AA57-BEA7-4FB8-B371-546296789AEF}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {F747AA57-BEA7-4FB8-B371-546296789AEF}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{F747AA57-BEA7-4FB8-B371-546296789AEF}.Debug|Any CPU.Build.0 = Debug|Any CPU {F747AA57-BEA7-4FB8-B371-546296789AEF}.Debug|Any CPU.Build.0 = Debug|Any CPU
{F747AA57-BEA7-4FB8-B371-546296789AEF}.Debug|Mixed Platforms.ActiveCfg = Debug|x86 {F747AA57-BEA7-4FB8-B371-546296789AEF}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
{F747AA57-BEA7-4FB8-B371-546296789AEF}.Debug|Mixed Platforms.Build.0 = Debug|x86 {F747AA57-BEA7-4FB8-B371-546296789AEF}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
{F747AA57-BEA7-4FB8-B371-546296789AEF}.Debug|x86.ActiveCfg = Debug|x86 {F747AA57-BEA7-4FB8-B371-546296789AEF}.Debug|x86.ActiveCfg = Debug|x86
{F747AA57-BEA7-4FB8-B371-546296789AEF}.Debug|x86.Build.0 = Debug|x86 {F747AA57-BEA7-4FB8-B371-546296789AEF}.Debug|x86.Build.0 = Debug|x86
{F747AA57-BEA7-4FB8-B371-546296789AEF}.Release|Any CPU.ActiveCfg = Release|x86 {F747AA57-BEA7-4FB8-B371-546296789AEF}.Release|Any CPU.ActiveCfg = Release|x86
{F747AA57-BEA7-4FB8-B371-546296789AEF}.Release|Mixed Platforms.ActiveCfg = Release|x86 {F747AA57-BEA7-4FB8-B371-546296789AEF}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
{F747AA57-BEA7-4FB8-B371-546296789AEF}.Release|Mixed Platforms.Build.0 = Release|x86 {F747AA57-BEA7-4FB8-B371-546296789AEF}.Release|Mixed Platforms.Build.0 = Release|Any CPU
{F747AA57-BEA7-4FB8-B371-546296789AEF}.Release|x86.ActiveCfg = Release|x86 {F747AA57-BEA7-4FB8-B371-546296789AEF}.Release|x86.ActiveCfg = Release|x86
{F747AA57-BEA7-4FB8-B371-546296789AEF}.Release|x86.Build.0 = Release|x86 {F747AA57-BEA7-4FB8-B371-546296789AEF}.Release|x86.Build.0 = Release|x86
EndGlobalSection EndGlobalSection

View File

@@ -203,7 +203,7 @@ namespace DynamORM
mainResult = cache.EnumerateReader().ToList(); mainResult = cache.EnumerateReader().ToList();
} }
else if (argType.IsValueType) else if (argType.IsValueType || types[0] == typeof(string))
{ {
Type listType = typeof(List<>).MakeGenericType(new Type[] { argType }); Type listType = typeof(List<>).MakeGenericType(new Type[] { argType });
IList listInstance = (IList)Activator.CreateInstance(listType); IList listInstance = (IList)Activator.CreateInstance(listType);
@@ -219,6 +219,25 @@ namespace DynamORM
mainResult = listInstance; mainResult = listInstance;
} }
else if (types[0] == typeof(Guid))
{
Type listType = typeof(List<>).MakeGenericType(new Type[] { argType });
IList listInstance = (IList)Activator.CreateInstance(listType);
object defVal = listType.GetDefaultValue();
IDataReader cache = null;
using (IDataReader rdr = cmd.ExecuteReader())
cache = rdr.CachedReader();
while (cache.Read())
{
if (cache[0] == DBNull.Value && Guid.TryParse(cache[0].ToString(), out Guid g))
listInstance.Add(g);
}
mainResult = listInstance;
}
else else
{ {
DynamicTypeMap mapper = DynamicMapperCache.GetMapper(argType); DynamicTypeMap mapper = DynamicMapperCache.GetMapper(argType);
@@ -232,12 +251,18 @@ namespace DynamORM
mainResult = cache.EnumerateReader().MapEnumerable(argType).ToList(); mainResult = cache.EnumerateReader().MapEnumerable(argType).ToList();
} }
} }
else if (types[0].IsValueType) else if (types[0].IsValueType || types[0] == typeof(string))
{ {
mainResult = cmd.ExecuteScalar(); mainResult = cmd.ExecuteScalar();
if (mainResult != DBNull.Value) if (mainResult != DBNull.Value)
mainResult = types[0].CastObject(mainResult); mainResult = types[0].CastObject(mainResult);
} }
else if (types[0] == typeof(Guid))
{
mainResult = cmd.ExecuteScalar();
if (mainResult != DBNull.Value && Guid.TryParse(mainResult.ToString(), out Guid g))
mainResult = g;
}
else else
{ {
DynamicTypeMap mapper = DynamicMapperCache.GetMapper(types[0]); DynamicTypeMap mapper = DynamicMapperCache.GetMapper(types[0]);

View File

@@ -1,4 +1,6 @@
using System.Linq; using System;
using System.Collections.Generic;
using System.Linq;
using DynamORM; using DynamORM;
namespace Tester namespace Tester
@@ -8,9 +10,9 @@ namespace Tester
private static DynamicDatabase GetORM() private static DynamicDatabase GetORM()
{ {
return new DynamicDatabase(System.Data.SqlClient.SqlClientFactory.Instance, return new DynamicDatabase(System.Data.SqlClient.SqlClientFactory.Instance,
//"packet size=4096;User Id=sa;Password=Sa123;data source=192.168.1.9,1434;initial catalog=MAH_Melle-GAGARIN;", "packet size=4096;User Id=sa;Password=sa123;data source=127.0.0.1,1435;initial catalog=MOM_LANGOWSKI_WMS_TEST;",
//"packet size=4096;User Id=sa;Password=sa123;data source=192.168.1.9,1433;initial catalog=MOM_NEXT_Florentyna_WMS_PROD;", //"packet size=4096;User Id=sa;Password=sa123;data source=192.168.1.9,1433;initial catalog=MOM_NEXT_Florentyna_WMS_PROD;",
"packet size=4096;User Id=sa;Password=sa123;data source=192.168.0.6;initial catalog=DynamORM;", //"packet size=4096;User Id=sa;Password=sa123;data source=127.0.0.1;initial catalog=DynamORM;",
DynamicDatabaseOptions.SingleConnection | DynamicDatabaseOptions.SingleTransaction | DynamicDatabaseOptions.SupportSchema | DynamicDatabaseOptions.SingleConnection | DynamicDatabaseOptions.SingleTransaction | DynamicDatabaseOptions.SupportSchema |
DynamicDatabaseOptions.SupportStoredProcedures | DynamicDatabaseOptions.SupportTop | DynamicDatabaseOptions.DumpCommands); DynamicDatabaseOptions.SupportStoredProcedures | DynamicDatabaseOptions.SupportTop | DynamicDatabaseOptions.DumpCommands);
@@ -22,30 +24,34 @@ namespace Tester
private static void Main(string[] args) private static void Main(string[] args)
{ {
var c = new System.Data.SqlClient.SqlConnection("packet size=4096;User Id=sa;Password=sa123;data source=192.168.0.6;initial catalog=DynamORM;"); //var c = new System.Data.SqlClient.SqlConnection("packet size=4096;User Id=sa;Password=sa123;data source=192.168.0.6;initial catalog=DynamORM;");
using (var db = GetORM()) using (var db = GetORM())
{ {
try //try
{ //{
db.Execute("DROP TABLE Experiments "); // db.Execute("DROP TABLE Experiments ");
} //}
catch { } //catch { }
db.Execute("CREATE TABLE Experiments (t1 nvarchar(50) NOT NULL DEFAULT N'', t2 varchar(50) NOT NULL DEFAULT '');"); //db.Execute("CREATE TABLE Experiments (t1 nvarchar(50) NOT NULL DEFAULT N'', t2 varchar(50) NOT NULL DEFAULT '');");
var q = db.From(x => x.Experiments.As(x.e1)); //var q = db.From(x => x.Experiments.As(x.e1));
q //q
.Where(x => x.t2 = "Dupa") // .Where(x => x.t2 = "Dupa")
.Where(x => x.Exists( // .Where(x => x.Exists(
q.SubQuery() // q.SubQuery()
.From(y => y.Experiments.As(x.e2)) // .From(y => y.Experiments.As(x.e2))
.Where(y => y.e2.t1 == y.e1.t1))) // .Where(y => y.e2.t1 == y.e1.t1)))
.Execute().ToList(); // .Execute().ToList();
db.Execute("DROP TABLE Experiments "); //db.Execute("DROP TABLE Experiments ");
var resL = db.Procedures.GetProductDesc<IOrderedEnumerable<GetProductDesc_Result>>(); db.Procedures.usp_API_Generate_Doc_Number<string>(key: Guid.NewGuid(), mdn_id: "ZZ");
var resL = (db.Procedures.GetProductDesc<IList<GetProductDesc_Result>>() as IEnumerable<dynamic>)
.Cast<GetProductDesc_Result>()
.ToArray();
var res = db.Procedures.GetProductDesc_withparameters<GetProductDesc_Result>(PID: 707); var res = db.Procedures.GetProductDesc_withparameters<GetProductDesc_Result>(PID: 707);
res = db.Procedures.GetProductDesc_withDefaultparameters<GetProductDesc_Result>(); res = db.Procedures.GetProductDesc_withDefaultparameters<GetProductDesc_Result>();