我有一段代码......
class GRFBlogExtension extends Extension
{
public function load(array $configs, ContainerBuilder $container)
{
$configuration = new Configuration();
$config = $this->processConfiguration($configuration, $configs);
$adminMenuKey = 'adminmenu';
$coreAdminMenu = $container->getParameter($uiMapKey);
$loader = new YamlFileLoader($container, new FileLocator(__DIR__ . '/../Resources/config'));
$loader->load('services.yml');
$branchAdminMenu = $container->getParameter($adminMenuKey);
$groupedAdminMenu = $coreAdminMenu + $branchAdminMenu;
$container->setParameter($adminMenuKey, $groupedAdminMenu);
}
}
......以前工作得相当快。现在,同一段代码非常缓慢。有时需要10-15秒才能完成。
使用...
TryUpdateModelAsync(tn.IT_Task, "IT_Task");
...为了输出后台发生的事情,我发现该方法几乎打开和关闭数据库1000次。对我来说,至少和我一样多,IT_Task"记录。也许更多。以下输出的小样本......
发生了什么?如何在从视图集合更新的模型上获得单条记录?
DB.ITConsole.Database.Log = s => System.Diagnostics.Debug.WriteLine(s);
更新 - 我尝试使用TryUpdateModelAsync做什么?
据我所知,我的知识,TryUpdateModelAsync只会做一件事。如果我错了,请道歉。
我已经根据数据库中的特定记录创建了一个模型,并在该页面上创建了一些下拉菜单等支持材料,然后在GET阶段将其发送到页面进行编辑。然后在POST阶段,我根据相同的记录创建另一个(相同的)模型。
TryUpdateModelAsync旨在从返回POST获取数据并使用该数据更新原始记录,然后我可以保存它。
我真的不希望这个过程完全查看数据库来合并这两组数据。我只希望在SaveChanges上访问数据库。
答案 0 :(得分:0)
我遇到了同样的问题,其中TryUpdateModelAsync占用的时间太长而无法返回。我认为问题是它试图遍历我的数据库对象上的所有子集合,并且EF6在整个过程中延迟加载所有内容。这似乎是这种情况,因为我通过关闭延迟加载来实现它,然后通过这样做从数据库中获取对象:
_database.Configuration.LazyLoadingEnabled = false;