甚么是testContext.datarow [“ mycolumnname”]的替换品是甚么-英雄云拓展知识分享
295
2024-01-22
我试图批量插入表“ tu”和“ tuv”(一项与多个关系)的表格,而没有重复的“ tu”表列“ hashtext”的记录,所以我做到了:
/// <summary>/// Check if the selected TranslationUnit is exsists at db.
/// </summary>
/// <param name="translationUnit"></param>
/// <returns></returns>

public bool CheckDuplicate(TranslationUnit translationUnit)
{
int FoundedTusCount = db.TUs.Where(tu => tu.HashText == translationUnit.Hash && TmIDList.Any(tm => tm == tu.TMID)).Count();
if(FoundedTusCount > 0)
{
return true;
}
return false;
}
这是与DB的很大联系,很多时间。
然后使用AddRange()每10000(保存连接时间)记录以下每10000(保存的连接时间)插入数据库中:
foreach (TranslationUnit item in Options.TMXFile.Data.Body.TranslationUnits.ToList()){
TU tu = FillTU(TMID, item);
ReadyTUs.Add(tu);
tu.TUVs = new List<TUV>();
foreach (TranslationUnitVariant item1 in item.TranslationUnitVariants)
{
tu.TUVs.Add( FillTUV(item1));
}
if (ReadyTUs.Count >= 10000)
{
Save();
}
}
Save();
这是保存功能:
private void Save(){
db.TUs.AddRange(ReadyTUs);
db.SaveChanges();
ReadyTUs.Clear();
db.Dispose();
db = new GTMEntities();
}
我现在的主要问题是时间和与DB的许多连接,因此,这种情况下,如果有某种方法可以插入TU和TUV桌子而没有重复的TU,则包括数百万张记录 - 它将好很多。
一种选择是使用 sqlbulkcopy.
基本上,您将所有数据插入登台表。
然后加入主和登台表, DELETE
匹配的舞台表中的所有记录。
然后 INSERT
进入真实的表格,结果 SELECT DISTINCT
从舞台表。
免责声明:
本网址(www.yingxiongyun.com)发布的材料主要源于独立创作和网友匿名投稿。此处提供的所有信息仅供参考之用。我们致力于提供准确且可信的信息,但不对材料的完整性或真实性作出任何保证。用户应自行验证相关信息的正确性,并对其决策承担全部责任。对于由于信息的错误、不准确或遗漏所造成的任何损失,本网址不承担任何法律责任。本网站所展示的所有内容,如文字、图像、标志、音频、视频、软件和程序等的版权均属于原创作者。如果任何组织或个人认为网站内容可能侵犯其知识产权,或包含不准确之处,请即刻联系我们进行相应处理。
发表评论
暂时没有评论,来抢沙发吧~