BN089-BS开发框架MVC4版/source20131023/Zephyr.Net/Zephyr.Data/Command/PartialClasses/Parameters.cs
(开头部分) 3KB这里只显示每个文件的开头 60 行。登录后可以解锁完整代码。
using System.Collections;
using System.Data;
using System;
using System.Text;
using System.Linq;
namespace Zephyr.Data
{
internal partial class DbCommand
{
public IDbCommand Parameter(string name, object value, DataTypes parameterType = DataTypes.Object, ParameterDirection direction = ParameterDirection.Input, int size = 0)
{
if (ReflectionHelper.IsList(value))
AddListParameterToInnerCommand(name, value);
else
AddParameterToInnerCommand(name, value, parameterType, direction, size);
return this;
}
private int _currentIndex = 0;
public IDbCommand Parameters(params object[] parameters)
{
if(parameters != null)
{
for (var i = 0; i < parameters.Count(); i++)
{
Parameter(_currentIndex.ToString(), parameters[_currentIndex]);
_currentIndex++;
}
}
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.Context.Data.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)
后面还有 46 行代码,解锁后查看完整代码
24 小时内免费解锁 3 个项目,之后 1 算力/个。 规则说明
AI 解读 AI
登录后可用,每次 10 算力,解读结果公开显示在下面。
还没有人解读过这个文件。
