3c1f479b9d
Former-commit-id: 806294f5ded97629b74c85c09952f2a74fe182d9
222 lines
7.6 KiB
C#
222 lines
7.6 KiB
C#
//---------------------------------------------------------------------
|
|
// <copyright file="EntityParameterCollection.cs" company="Microsoft">
|
|
// Copyright (c) Microsoft Corporation. All rights reserved.
|
|
// </copyright>
|
|
//
|
|
// @owner [....]
|
|
// @backupOwner [....]
|
|
//---------------------------------------------------------------------
|
|
using System.Collections;
|
|
using System.Collections.Generic;
|
|
using System.Text;
|
|
using System.Data;
|
|
using System.Data.Common;
|
|
using System.Data.Metadata.Edm;
|
|
|
|
namespace System.Data.EntityClient
|
|
{
|
|
/// <summary>
|
|
/// Class representing a parameter collection used in EntityCommand
|
|
/// </summary>
|
|
public sealed partial class EntityParameterCollection : DbParameterCollection
|
|
{
|
|
private static Type ItemType = typeof(EntityParameter);
|
|
private bool _isDirty;
|
|
|
|
/// <summary>
|
|
/// Constructs the EntityParameterCollection object
|
|
/// </summary>
|
|
internal EntityParameterCollection()
|
|
: base()
|
|
{
|
|
}
|
|
|
|
/// <summary>
|
|
/// Gets the parameter from the collection at the specified index
|
|
/// </summary>
|
|
/// <param name="index">The index of the parameter to retrieved</param>
|
|
/// <returns>The parameter at the index</returns>
|
|
public new EntityParameter this[int index]
|
|
{
|
|
get
|
|
{
|
|
return (EntityParameter)this.GetParameter(index);
|
|
}
|
|
set
|
|
{
|
|
this.SetParameter(index, value);
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
/// Gets the parameter with the given name from the collection
|
|
/// </summary>
|
|
/// <param name="parameterName">The name of the parameter to retrieved</param>
|
|
/// <returns>The parameter with the given name</returns>
|
|
public new EntityParameter this[string parameterName]
|
|
{
|
|
get
|
|
{
|
|
return (EntityParameter)this.GetParameter(parameterName);
|
|
}
|
|
set
|
|
{
|
|
this.SetParameter(parameterName, value);
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
/// Gets whether this collection has been changes since the last reset
|
|
/// </summary>
|
|
internal bool IsDirty
|
|
{
|
|
get
|
|
{
|
|
if (_isDirty)
|
|
{
|
|
return true;
|
|
}
|
|
|
|
// Loop through and return true if any parameter is dirty
|
|
foreach (EntityParameter parameter in this)
|
|
{
|
|
if (parameter.IsDirty)
|
|
{
|
|
return true;
|
|
}
|
|
}
|
|
|
|
return false;
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
/// Add a EntityParameter to the collection
|
|
/// </summary>
|
|
/// <param name="value">The parameter to add to the collection</param>
|
|
/// <returns>The index of the new parameter within the collection</returns>
|
|
public EntityParameter Add(EntityParameter value)
|
|
{
|
|
this.Add((object)value);
|
|
return value;
|
|
}
|
|
|
|
/// <summary>
|
|
/// Add a EntityParameter with the given name and value to the collection
|
|
/// </summary>
|
|
/// <param name="parameterName">The name of the parameter to add</param>
|
|
/// <param name="value">The value of the parameter to add</param>
|
|
/// <returns>The index of the new parameter within the collection</returns>
|
|
public EntityParameter AddWithValue(string parameterName, object value)
|
|
{
|
|
EntityParameter param = new EntityParameter();
|
|
param.ParameterName = parameterName;
|
|
param.Value = value;
|
|
return this.Add(param);
|
|
}
|
|
|
|
/// <summary>
|
|
/// Adds a EntityParameter with the given name and type to the collection
|
|
/// </summary>
|
|
/// <param name="parameterName">The name of the parameter to add</param>
|
|
/// <param name="dbType">The type of the parameter</param>
|
|
/// <returns>The index of the new parameter within the collection</returns>
|
|
public EntityParameter Add(string parameterName, DbType dbType)
|
|
{
|
|
return this.Add(new EntityParameter(parameterName, dbType));
|
|
}
|
|
|
|
/// <summary>
|
|
/// Add a EntityParameter with the given name, type, and size to the collection
|
|
/// </summary>
|
|
/// <param name="parameterName">The name of the parameter to add</param>
|
|
/// <param name="dbType">The type of the parameter</param>
|
|
/// <param name="size">The size of the parameter</param>
|
|
/// <returns>The index of the new parameter within the collection</returns>
|
|
public EntityParameter Add(string parameterName, DbType dbType, int size)
|
|
{
|
|
return this.Add(new EntityParameter(parameterName, dbType, size));
|
|
}
|
|
|
|
/// <summary>
|
|
/// Adds a range of EntityParameter objects to this collection
|
|
/// </summary>
|
|
/// <param name="values">The arary of EntityParameter objects to add</param>
|
|
public void AddRange(EntityParameter[] values)
|
|
{
|
|
this.AddRange((Array)values);
|
|
}
|
|
|
|
/// <summary>
|
|
/// Check if the collection has a parameter with the given parameter name
|
|
/// </summary>
|
|
/// <param name="parameterName">The parameter name to look for</param>
|
|
/// <returns>True if the collection has a parameter with the given name</returns>
|
|
public override bool Contains(string parameterName)
|
|
{
|
|
return this.IndexOf(parameterName) != -1;
|
|
}
|
|
|
|
/// <summary>
|
|
/// Copies the given array of parameters into this collection
|
|
/// </summary>
|
|
/// <param name="array">The array to copy into</param>
|
|
/// <param name="index">The index in the array where the copy starts</param>
|
|
public void CopyTo(EntityParameter[] array, int index)
|
|
{
|
|
this.CopyTo((Array)array, index);
|
|
}
|
|
|
|
/// <summary>
|
|
/// Finds the index in the collection of the given parameter object
|
|
/// </summary>
|
|
/// <param name="value">The parameter to search for</param>
|
|
/// <returns>The index of the parameter, -1 if not found</returns>
|
|
public int IndexOf(EntityParameter value)
|
|
{
|
|
return IndexOf((object)value);
|
|
}
|
|
|
|
/// <summary>
|
|
/// Add a EntityParameter with the given value to the collection at a location indicated by the index
|
|
/// </summary>
|
|
/// <param name="index">The index at which the parameter is to be inserted</param>
|
|
/// <param name="value">The value of the parameter</param>
|
|
public void Insert(int index, EntityParameter value)
|
|
{
|
|
this.Insert(index, (object)value);
|
|
}
|
|
|
|
/// <summary>
|
|
/// Marks that this collection has been changed
|
|
/// </summary>
|
|
private void OnChange()
|
|
{
|
|
_isDirty = true;
|
|
}
|
|
|
|
/// <summary>
|
|
/// Remove a EntityParameter with the given value from the collection
|
|
/// </summary>
|
|
/// <param name="value">The parameter to remove</param>
|
|
public void Remove(EntityParameter value)
|
|
{
|
|
this.Remove((object)value);
|
|
}
|
|
|
|
/// <summary>
|
|
/// Reset the dirty flag on the collection
|
|
/// </summary>
|
|
internal void ResetIsDirty()
|
|
{
|
|
_isDirty = false;
|
|
|
|
// Loop through and reset each parameter
|
|
foreach (EntityParameter parameter in this)
|
|
{
|
|
parameter.ResetIsDirty();
|
|
}
|
|
}
|
|
}
|
|
}
|