基本上,我在一个事务中插入35000个对象:
using(var uow = new MyContext()){
for(int i = 1; i < 35000; i++) {
var o = new MyObject()...;
uow.MySet.Add(o);
}
uow.SaveChanges();
}
Run Code Online (Sandbox Code Playgroud)
这需要永远!如果我使用底层ObjectContex
t(通过使用IObjectAdapter
),它仍然很慢但需要大约20秒.它似乎DbSet<>
正在进行一些线性搜索,这需要花费大量时间......
其他人看到这个问题?
我们目前有一个.NET 4应用程序,它由在后台运行的Windows服务和本地或远程客户端组成(通常只有1-3个).
客户端有一个WPF GUI,需要来自Windows服务的一些数据.因此,我们将WCF与NamedPipe绑定用于本地客户端,并将NetTcp绑定用于远程客户端.这有效,但我们经常遇到无法访问的端点(通道出现故障或未找到等)的问题.我们已经尝试重建故障连接,但它似乎非常脆弱......
现在进入Web Api:看起来基于HTTP的堆栈可能更强大(没有通道,没有端点,也可以在Windows服务中自托管).通道损坏似乎没有问题,因为每个请求都是单独处理的.因此,如果某些内容失败,您只需重复该请求.(我们有其他应用程序的ASP.NET MVC经验,所以这对我们来说并不陌生).
现在我们在想什么可能是我们最好的选择.是否更好地"强化"我们现有的WCF服务(一个具有大约15个操作的服务接口)或将接口移动到Web Api并将其作为HTTP请求(使用JSON数据)运行?表演不是我们的主要问题......
有任何想法吗?哈特穆特