Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/csharp-4.0/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net 使用实体框架同时写入同一个表_Asp.net_C# 4.0_Entity Framework 4 - Fatal编程技术网

Asp.net 使用实体框架同时写入同一个表

Asp.net 使用实体框架同时写入同一个表,asp.net,c#-4.0,entity-framework-4,Asp.net,C# 4.0,Entity Framework 4,开发网站(使用实体框架)我遇到了以下问题: 1.如果很多人(比如说10000人)试图通过实体框架同时“写入”DB(SQL Server)中的同一个特定表,会发生什么 2.在我的项目中,我有模块,出于解耦的原因,我使用singleton类(ModulesManager),该类应从每个模块中采取行动,并异步执行,如下所示: public void InsertNewRecord(Action addNewRecordAction) { if (addNewRecord

开发网站(使用实体框架)我遇到了以下问题:

1.如果很多人(比如说10000人)试图通过实体框架同时“写入”DB(SQL Server)中的同一个特定表,会发生什么

2.在我的项目中,我有模块,出于解耦的原因,我使用singleton类(ModulesManager),该类应从每个模块中采取行动,并异步执行,如下所示:

    public void InsertNewRecord(Action addNewRecordAction)
    {
        if (addNewRecordAction != null)
        {
            addNewRecordAction.BeginInvoke(recordCallback, null);
        }
    }
使用singleton类作为唯一负责向DB写入数据的地方,这是一种好方法吗

3.实体框架是否可以提供与使用SQL查询相同的速度

如果有很多人(比如说10000人)试图“写作”,会发生什么 同时通过数据库(SQL Server)中的同一特定表 实体框架

如果您的意思是插入到同一个表中,那么这些插入将根据数据库中的事务隔离级别进行处理。通常只有单个事务可以持有插入锁,因此插入是按顺序处理的(它与EF无关)。同时插入10000个用户似乎不是可持续的体系结构——其中一些用户可能会超时

在我的项目中,我有模块,出于解耦的原因,我使用了 singleton类(ModuleManager),它应该从每个 模块并异步执行,如下所示:

    public void InsertNewRecord(Action addNewRecordAction)
    {
        if (addNewRecordAction != null)
        {
            addNewRecordAction.BeginInvoke(recordCallback, null);
        }
    }
您的管理器异步调用该操作,因此答案主要取决于该操作正在执行的操作。若它打开自己的上下文,执行一些更改并保存它们,那个么在EF端就不会有任何技术问题

实体框架是否可以提供与使用SQL查询相同的速度


否。EF会进行额外的处理,因此它将始终较慢。

您认为使用实体框架而不是SQL查询(旧方法)构建大型项目是真的吗?规模本身不是一个约束。真正的性能要求以及设计应用程序的方式可能需要直接使用SQL查询(但不一定在任何地方都使用,因为将EF和本机SQL结合起来仍然有效,有时甚至是需要的)。