我有以下功能
public static void UpdateWithStoredProcedure<T>(string storedProcedure, T entity)
{
var command = PrepareCommand(CommandType.StoredProcedure);
command.CommandText = storedProcedure;
AddObjectPropertiesAsParametersToCommand(command, entity);
command.ExecuteNonQuery();
}
我这样称呼
UpdateWithStoredProcedure(DeleteDocumentStyleProcedure, new KeyValuePair<string, object>("Id", DocumentStyle.DocumentId));
有没有办法传递两个参数。我的意思是,两个KeyValuePair实例?我尝试传递列表和字典,但AddObjectPropertiesAsParametersToCommand的代码也映射了这些类的内部属性,如Count。
答案 0 :(得分:1)
为什么不更改函数来迭代实体:
public static void UpdateWithStoredProcedure<T>(string storedProcedure, params T[] entities)
{
var command = PrepareCommand(CommandType.StoredProcedure);
command.CommandText = storedProcedure;
foreach(T entity in entities)
AddObjectPropertiesAsParametersToCommand(command, entity);
command.ExecuteNonQuery();
}
答案 1 :(得分:0)
最后,我使用我需要的属性声明了一个新的内部类,并将其实例传递给AddObjectPropertiesAsParametersToCommand
函数。
class UpdateLogoParameters
{
public byte[] Logo{get;set;}
public int DocumentId{get;set;}
public UpdateLogoParameters(byte[] logo, int documentId)
{
Logo = logo;
DocumentId = documentId;
}
}