你怎麼DbCommand
參數複製到另一個DbCommand
,我希望有一個新的DbCommand
具有相同的參數作爲我的最後DbCommand
。但現在用一個不同的SQL字符串。從的DbCommand參數複製到其他的DbCommand
8
A
回答
2
您可以把你需要將代碼重新使用在一個單獨的方法:
public DbCommand RecycledParameters(string sql, IList<DbParameter> parameters)
{
var result = db.GetSqlStringCommand(sql);
foreach(DbParameter p in parameters)
{
db.AddInParameter(result, p.ParameterName, p.DbType, p.Value);
}
return result;
}
1
如果你追求的是在PARMS集合,你可以嘗試創建一個深拷貝一個輔助方法您的命令中的.parameters集合。看看這是否會吐出你想要的東西。
我不能讚揚ObjectCopier方法,它只是一個從過去的項目中獲得的有用的基類方法。
private DbParameterCollection cloneParms(DbCommand commandWithParms)
{
return ObjectCopier.Clone<DbParameterCollection>(commandWithParms.Parameters);
}
public static class ObjectCopier
{
/// <summary>
/// Perform a deep Copy of the object.
/// </summary>
/// <typeparam name="T">The type of object being copied.</typeparam>
/// <param name="source">The object instance to copy.</param>
/// <returns>The copied object.</returns>
public static T Clone<T>(T source)
{
if (!typeof(T).IsSerializable)
{
throw new ArgumentException("The type must be serializable.", "source");
}
// Don't serialize a null object, simply return the default for that object
if (Object.ReferenceEquals(source, null))
{
return default(T);
}
IFormatter formatter = new BinaryFormatter();
Stream stream = new MemoryStream();
using (stream)
{
formatter.Serialize(stream, source);
stream.Seek(0, SeekOrigin.Begin);
return (T)formatter.Deserialize(stream);
}
}
}
3
你能做這樣的事嗎?
System.Data.Common.DbCommand command = new System.Data.SqlClient.SqlCommand();
System.Data.Common.DbCommand command1 = new System.Data.SqlClient.SqlCommand();
command1.Parameters.AddRange(command.Parameters.Cast<System.Data.Common.DbParameter>().ToArray());
1
// Copy parameters from cmd1 to cmd2
// Creates an array with new parameters
var nsp = cmd1.Parameters.Cast<ICloneable>().Select(x => x.Clone() as SqlParameter).Where(x => x != null).ToArray();
// Copy parameters into another command
cmd2.Parameters.AddRange(nsp);
相關問題
- 1. 檢測參數的DbCommand
- 2. 參數添加在的DBCommand
- 3. 添加參數到DbCommand的例外
- 4. 從DbCommand INSERT EXEC
- 5. 在DbCommand中遍歷參數
- 6. 可以添加到DbCommand的參數數量是否有限制?
- 7. Gridview和DbCommand
- 8. 從C#中插入NULL到SQL DB DbCommand
- 9. 的DbCommand和參數化的SQL,ORACLE VS SQL服務器
- 10. 企業庫dbcommand AddInParameter方法
- 11. C#DbCommand在循環中
- 12. .Net DbCommand消毒輸入
- 13. 從DbCommand對象轉換爲OracleCommand對象
- 14. 的DbCommand插入錯誤「變成」
- 15. 錯誤創建一個新的DbCommand
- 16. DbCommand,必須聲明變量錯誤
- 17. DbProviderFactory,DbConnection,DbCommand和DbDataAdapter線程安全嗎?
- 18. 在c#中使用DbCommand執行命令#
- 19. 如何通過MySQL的空參數上的DbCommand在企業圖書館
- 20. 使用DBCommand調用tsql函數的SSIS OLE
- 21. 如何從實體框架獲取DbCommand IQueryable
- 22. 後的IDataReader = DbObject.ExecuteReader(的DbCommand)第二次執行
- 23. VBA將值複製到其他工作簿,使用複製的值作爲參考複製其他值?
- 24. DbCommand - 如何提供提供程序特定的屬性
- 25. 如何在給定DbCommand或DbConnection的情況下創建DbDataAdapter?
- 26. 我應該在哪裏創建我的DbCommand實例?
- 27. 企業庫dbcommand用於Oracle的AddInParameter方法
- 28. 數據值beeing複製到其他參數C++,C#
- 29. 從一列複製列值到其他
- 30. 使用DbCommand最現代的方式來查詢ASP.NET 3.5中的數據庫嗎?
還有沒有其他的辦法。如果我會這樣做,我將不得不爲每個可循環參數創建一個函數。 – 2011-01-24 05:07:20
將這些參數也作爲參數傳遞。 (請參閱我的更新回答) – 2011-01-24 05:20:37