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 算力,解读结果公开显示在下面。

还没有人解读过这个文件。