FluentData/Command/PartialClasses/Parameters.cs
(开头部分) 3KB这里只显示每个文件的开头 60 行。登录后可以解锁完整代码。
using System.Collections;
using System.Data;
using System.Linq;
using System;
using System.Text;
namespace FluentData
{
internal partial class DbCommand
{
public IDbCommand Parameters(params object[] parameters)
{
for (var i = 0; i < parameters.Count(); i++)
Parameter(i.ToString(), parameters[i]);
return this;
}
public IDbCommand Parameter(string name, object value, DataTypes parameterType, ParameterDirection direction, int size = 0)
{
if (ReflectionHelper.IsList(value))
AddListParameterToInnerCommand(name, value);
else
AddParameterToInnerCommand(name, value, parameterType, direction, size);
return this;
}
private void AddListParameterToInnerCommand(string name, object value)
{
var list = (IEnumerable) value;
var newInStatement = new StringBuilder();
var k = -1;
foreach (var item in list)
{
k++;
if (k == 0)
newInStatement.Append(" in(");
else
newInStatement.Append(",");
var parameter = AddParameterToInnerCommand("p" + name + "p" + k.ToString(), item);
newInStatement.Append(parameter.ParameterName);
}
newInStatement.Append(")");
var oldInStatement = string.Format(" in({0})", _data.ContextData.Provider.GetParameterName(name));
_data.Sql.Replace(oldInStatement, newInStatement.ToString());
}
private IDbDataParameter AddParameterToInnerCommand(string name, object value, DataTypes parameterType = DataTypes.Object, ParameterDirection direction = ParameterDirection.Input, int size = 0)
{
if (value == null)
value = DBNull.Value;
if (value.GetType().IsEnum)
value = (int) value;
后面还有 48 行代码,解锁后查看完整代码
24 小时内免费解锁 3 个项目,之后 1 积分/个。 规则说明
AI 解读
登录后可用,每次 10 积分,解读结果公开显示在下面。
还没有人解读过这个文件。
