- 优化 IAdo.Query 方法,当传入带主键特性的实体时,防止主键列为 null 时导致整行记录也为 null;

This commit is contained in:
28810
2020-03-12 00:45:56 +08:00
parent fff7925d22
commit e132133e62
5 changed files with 85 additions and 65 deletions

View File

@ -105,7 +105,7 @@ namespace FreeSql.Internal.CommonProvider
{
if (indexes == null)
{
var sbflag = new StringBuilder().Append("query");
var sbflag = new StringBuilder().Append("adoQuery");
var dic = new Dictionary<string, int>(StringComparer.CurrentCultureIgnoreCase);
for (var a = 0; a < dr.FieldCount; a++)
{
@ -148,7 +148,7 @@ namespace FreeSql.Internal.CommonProvider
case 0:
if (indexes1 == null)
{
var sbflag = new StringBuilder().Append("query");
var sbflag = new StringBuilder().Append("adoQuery");
var dic = new Dictionary<string, int>(StringComparer.CurrentCultureIgnoreCase);
for (var a = 0; a < dr.FieldCount; a++)
{
@ -165,7 +165,7 @@ namespace FreeSql.Internal.CommonProvider
case 1:
if (indexes2 == null)
{
var sbflag = new StringBuilder().Append("query");
var sbflag = new StringBuilder().Append("adoQuery");
var dic = new Dictionary<string, int>(StringComparer.CurrentCultureIgnoreCase);
for (var a = 0; a < dr.FieldCount; a++)
{
@ -216,7 +216,7 @@ namespace FreeSql.Internal.CommonProvider
case 0:
if (indexes1 == null)
{
var sbflag = new StringBuilder().Append("query");
var sbflag = new StringBuilder().Append("adoQuery");
var dic = new Dictionary<string, int>(StringComparer.CurrentCultureIgnoreCase);
for (var a = 0; a < dr.FieldCount; a++)
{
@ -233,7 +233,7 @@ namespace FreeSql.Internal.CommonProvider
case 1:
if (indexes2 == null)
{
var sbflag = new StringBuilder().Append("query");
var sbflag = new StringBuilder().Append("adoQuery");
var dic = new Dictionary<string, int>(StringComparer.CurrentCultureIgnoreCase);
for (var a = 0; a < dr.FieldCount; a++)
{
@ -250,7 +250,7 @@ namespace FreeSql.Internal.CommonProvider
case 2:
if (indexes3 == null)
{
var sbflag = new StringBuilder().Append("query");
var sbflag = new StringBuilder().Append("adoQuery");
var dic = new Dictionary<string, int>(StringComparer.CurrentCultureIgnoreCase);
for (var a = 0; a < dr.FieldCount; a++)
{
@ -307,7 +307,7 @@ namespace FreeSql.Internal.CommonProvider
case 0:
if (indexes1 == null)
{
var sbflag = new StringBuilder().Append("query");
var sbflag = new StringBuilder().Append("adoQuery");
var dic = new Dictionary<string, int>(StringComparer.CurrentCultureIgnoreCase);
for (var a = 0; a < dr.FieldCount; a++)
{
@ -324,7 +324,7 @@ namespace FreeSql.Internal.CommonProvider
case 1:
if (indexes2 == null)
{
var sbflag = new StringBuilder().Append("query");
var sbflag = new StringBuilder().Append("adoQuery");
var dic = new Dictionary<string, int>(StringComparer.CurrentCultureIgnoreCase);
for (var a = 0; a < dr.FieldCount; a++)
{
@ -341,7 +341,7 @@ namespace FreeSql.Internal.CommonProvider
case 2:
if (indexes3 == null)
{
var sbflag = new StringBuilder().Append("query");
var sbflag = new StringBuilder().Append("adoQuery");
var dic = new Dictionary<string, int>(StringComparer.CurrentCultureIgnoreCase);
for (var a = 0; a < dr.FieldCount; a++)
{
@ -358,7 +358,7 @@ namespace FreeSql.Internal.CommonProvider
case 3:
if (indexes4 == null)
{
var sbflag = new StringBuilder().Append("query");
var sbflag = new StringBuilder().Append("adoQuery");
var dic = new Dictionary<string, int>(StringComparer.CurrentCultureIgnoreCase);
for (var a = 0; a < dr.FieldCount; a++)
{
@ -421,7 +421,7 @@ namespace FreeSql.Internal.CommonProvider
case 0:
if (indexes1 == null)
{
var sbflag = new StringBuilder().Append("query");
var sbflag = new StringBuilder().Append("adoQuery");
var dic = new Dictionary<string, int>(StringComparer.CurrentCultureIgnoreCase);
for (var a = 0; a < dr.FieldCount; a++)
{
@ -438,7 +438,7 @@ namespace FreeSql.Internal.CommonProvider
case 1:
if (indexes2 == null)
{
var sbflag = new StringBuilder().Append("query");
var sbflag = new StringBuilder().Append("adoQuery");
var dic = new Dictionary<string, int>(StringComparer.CurrentCultureIgnoreCase);
for (var a = 0; a < dr.FieldCount; a++)
{
@ -455,7 +455,7 @@ namespace FreeSql.Internal.CommonProvider
case 2:
if (indexes3 == null)
{
var sbflag = new StringBuilder().Append("query");
var sbflag = new StringBuilder().Append("adoQuery");
var dic = new Dictionary<string, int>(StringComparer.CurrentCultureIgnoreCase);
for (var a = 0; a < dr.FieldCount; a++)
{
@ -472,7 +472,7 @@ namespace FreeSql.Internal.CommonProvider
case 3:
if (indexes4 == null)
{
var sbflag = new StringBuilder().Append("query");
var sbflag = new StringBuilder().Append("adoQuery");
var dic = new Dictionary<string, int>(StringComparer.CurrentCultureIgnoreCase);
for (var a = 0; a < dr.FieldCount; a++)
{
@ -489,7 +489,7 @@ namespace FreeSql.Internal.CommonProvider
case 4:
if (indexes5 == null)
{
var sbflag = new StringBuilder().Append("query");
var sbflag = new StringBuilder().Append("adoQuery");
var dic = new Dictionary<string, int>(StringComparer.CurrentCultureIgnoreCase);
for (var a = 0; a < dr.FieldCount; a++)
{

View File

@ -31,7 +31,7 @@ namespace FreeSql.Internal.CommonProvider
{
if (indexes == null)
{
var sbflag = new StringBuilder().Append("query");
var sbflag = new StringBuilder().Append("adoQuery");
var dic = new Dictionary<string, int>(StringComparer.CurrentCultureIgnoreCase);
for (var a = 0; a < dr.FieldCount; a++)
{
@ -75,7 +75,7 @@ namespace FreeSql.Internal.CommonProvider
case 0:
if (indexes1 == null)
{
var sbflag = new StringBuilder().Append("QueryAsync");
var sbflag = new StringBuilder().Append("adoQuery");
var dic = new Dictionary<string, int>(StringComparer.CurrentCultureIgnoreCase);
for (var a = 0; a < dr.FieldCount; a++)
{
@ -92,7 +92,7 @@ namespace FreeSql.Internal.CommonProvider
case 1:
if (indexes2 == null)
{
var sbflag = new StringBuilder().Append("QueryAsync");
var sbflag = new StringBuilder().Append("adoQuery");
var dic = new Dictionary<string, int>(StringComparer.CurrentCultureIgnoreCase);
for (var a = 0; a < dr.FieldCount; a++)
{
@ -144,7 +144,7 @@ namespace FreeSql.Internal.CommonProvider
case 0:
if (indexes1 == null)
{
var sbflag = new StringBuilder().Append("QueryAsync");
var sbflag = new StringBuilder().Append("adoQuery");
var dic = new Dictionary<string, int>(StringComparer.CurrentCultureIgnoreCase);
for (var a = 0; a < dr.FieldCount; a++)
{
@ -161,7 +161,7 @@ namespace FreeSql.Internal.CommonProvider
case 1:
if (indexes2 == null)
{
var sbflag = new StringBuilder().Append("QueryAsync");
var sbflag = new StringBuilder().Append("adoQuery");
var dic = new Dictionary<string, int>(StringComparer.CurrentCultureIgnoreCase);
for (var a = 0; a < dr.FieldCount; a++)
{
@ -178,7 +178,7 @@ namespace FreeSql.Internal.CommonProvider
case 2:
if (indexes3 == null)
{
var sbflag = new StringBuilder().Append("QueryAsync");
var sbflag = new StringBuilder().Append("adoQuery");
var dic = new Dictionary<string, int>(StringComparer.CurrentCultureIgnoreCase);
for (var a = 0; a < dr.FieldCount; a++)
{
@ -236,7 +236,7 @@ namespace FreeSql.Internal.CommonProvider
case 0:
if (indexes1 == null)
{
var sbflag = new StringBuilder().Append("QueryAsync");
var sbflag = new StringBuilder().Append("adoQuery");
var dic = new Dictionary<string, int>(StringComparer.CurrentCultureIgnoreCase);
for (var a = 0; a < dr.FieldCount; a++)
{
@ -253,7 +253,7 @@ namespace FreeSql.Internal.CommonProvider
case 1:
if (indexes2 == null)
{
var sbflag = new StringBuilder().Append("QueryAsync");
var sbflag = new StringBuilder().Append("adoQuery");
var dic = new Dictionary<string, int>(StringComparer.CurrentCultureIgnoreCase);
for (var a = 0; a < dr.FieldCount; a++)
{
@ -270,7 +270,7 @@ namespace FreeSql.Internal.CommonProvider
case 2:
if (indexes3 == null)
{
var sbflag = new StringBuilder().Append("QueryAsync");
var sbflag = new StringBuilder().Append("adoQuery");
var dic = new Dictionary<string, int>(StringComparer.CurrentCultureIgnoreCase);
for (var a = 0; a < dr.FieldCount; a++)
{
@ -287,7 +287,7 @@ namespace FreeSql.Internal.CommonProvider
case 3:
if (indexes4 == null)
{
var sbflag = new StringBuilder().Append("QueryAsync");
var sbflag = new StringBuilder().Append("adoQuery");
var dic = new Dictionary<string, int>(StringComparer.CurrentCultureIgnoreCase);
for (var a = 0; a < dr.FieldCount; a++)
{
@ -351,7 +351,7 @@ namespace FreeSql.Internal.CommonProvider
case 0:
if (indexes1 == null)
{
var sbflag = new StringBuilder().Append("QueryAsync");
var sbflag = new StringBuilder().Append("adoQuery");
var dic = new Dictionary<string, int>(StringComparer.CurrentCultureIgnoreCase);
for (var a = 0; a < dr.FieldCount; a++)
{
@ -368,7 +368,7 @@ namespace FreeSql.Internal.CommonProvider
case 1:
if (indexes2 == null)
{
var sbflag = new StringBuilder().Append("QueryAsync");
var sbflag = new StringBuilder().Append("adoQuery");
var dic = new Dictionary<string, int>(StringComparer.CurrentCultureIgnoreCase);
for (var a = 0; a < dr.FieldCount; a++)
{
@ -385,7 +385,7 @@ namespace FreeSql.Internal.CommonProvider
case 2:
if (indexes3 == null)
{
var sbflag = new StringBuilder().Append("QueryAsync");
var sbflag = new StringBuilder().Append("adoQuery");
var dic = new Dictionary<string, int>(StringComparer.CurrentCultureIgnoreCase);
for (var a = 0; a < dr.FieldCount; a++)
{
@ -402,7 +402,7 @@ namespace FreeSql.Internal.CommonProvider
case 3:
if (indexes4 == null)
{
var sbflag = new StringBuilder().Append("QueryAsync");
var sbflag = new StringBuilder().Append("adoQuery");
var dic = new Dictionary<string, int>(StringComparer.CurrentCultureIgnoreCase);
for (var a = 0; a < dr.FieldCount; a++)
{
@ -419,7 +419,7 @@ namespace FreeSql.Internal.CommonProvider
case 4:
if (indexes5 == null)
{
var sbflag = new StringBuilder().Append("QueryAsync");
var sbflag = new StringBuilder().Append("adoQuery");
var dic = new Dictionary<string, int>(StringComparer.CurrentCultureIgnoreCase);
for (var a = 0; a < dr.FieldCount; a++)
{

View File

@ -1495,7 +1495,8 @@ namespace FreeSql.Internal
//判断主键为空,则整个对象不读取
//blockExp.Add(Expression.Assign(readpkvalExp, Expression.Call(rowExp, MethodDataReaderGetValue, dataIndexExp)));
if (trycol?.Attribute.IsPrimary == true)
if (flagStr.StartsWith("adoQuery") == false && //Ado.Query 的时候不作此判断
trycol?.Attribute.IsPrimary == true) //若主键值为 null则整行读取出来的对象为 null
{
ispkExp.Add(
Expression.IfThen(