有没有办法在 EF 中使用 ExecuteStoreCommand 执行多个插入语句?我正在使用 StringBuilder 生成多个插入语句。代码基本上是这样的
StringBuilder _saveReasonQuery = new StringBuilder();
public void ApplyRules()
{
using(var context = new SpecializedDBEntities())
{
foreach(var item in list)
{
//Do something
SaveReason(item, reasonId);
}
context.GetObjectContext().ExecuteStoreCommand(_saveReasonQuery.ToString());
ctx.SaveChanges();
}
}
//Inside Save Reason
public void SaveReason(...)
{
_saveReasonQuery.Append("INSERT INTO ORDER_IMPLEM_DTL_REASON ");
_saveReasonQuery.Append("(ORDER_IMPLEM_REASON_ID, SALES_ORDER_IMPLEM_DTL_ID, REASON_ID, REASON_STAT_ID, SALES_ORDER_BRDCST_ID, CREA_BY, CREA_DT)");
_saveReasonQuery.Append(" VALUES ");
_saveReasonQuery.Append(String.Format("('0', '{0}', '{1}', '{2}', '{3}', '{4}', TO_DATE('{5}', 'YY-MM-DD HH:mi'));",
orderSpot.SALES_ORDER_IMPLEM_DTL_ID, reasonId, Common.Convert_Int64(orderSpot.CUESHT_STAT_ID),
orderSpot.SALES_ORDER_DTL_BRDCST_ID, userContext.User.USER_CD, DateTime.Now.ToUniversalTime().ToString("yy-MM-dd hh:mm")));
}
但是,EF 执行查询时会出现 Invalid Character 错误。我做了一些研究,发现是分号产生了这个错误。但我无法删除分号,因为它是 Oracle 的“行尾”。有什么建议么?
此外,我直接针对数据库执行了从 StringBuilder 生成的字符串,它适用于插入 5 行。