- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我在我的 asp.net Web 应用程序中使用工作单元和存储库模式以及 EF6。 DbContext 对象在每次请求时都会被创建和销毁。
我认为在每个请求上创建新的 dbcontext 的成本很高(我没有做任何性能基准测试)。
在每个请求上创建 DbContext 的成本可以忽略吗?有人做过基准测试吗?
1 Câu trả lời
创建一个新的上下文非常便宜,在我的应用程序中平均约为 137 个刻度(0.0000137 秒)。
另一方面,保留上下文可能会非常昂贵,因此请经常丢弃它。
您查询的对象越多,最终在上下文中跟踪的实体就越多。由于实体是 POCOS, Entity Framework 绝对无法知道您修改了哪些实体,除非检查上下文中的每一个实体并相应地进行标记。
当然,一旦它们被标记,它只会对需要更新的实体进行数据库调用,但是当有大量实体被跟踪时,确定哪些需要更新是昂贵的,因为它必须根据已知值检查所有 POCOS 以查看它们是否已更改。
调用保存更改时进行更改跟踪的成本非常高,如果您一次只读取和更新一条记录,那么最好在每条记录之后处理上下文并创建一个新记录。另一种方法是卡在上下文上,这样您读取的每条记录都会在上下文中生成一个新实体,并且每次调用保存更改时都会慢一个实体。
是的,它确实更慢。例如,如果您要更新 10,000 个实体,一次将一个实体加载到同一上下文中,则第一次保存仅需要大约 30 个刻度,但后续每个实体将花费更长的时间,最后一个保存将花费超过 30,000 个刻度。相比之下,每次创建一个新上下文将导致每次更新一致的 30 个刻度。最后,由于卡在上下文和所有跟踪实体上的累积速度减慢,在每次提交之前处理和重新创建上下文最终只花费 20% 的时间(总时间的 1/5)!
这就是为什么您实际上应该只在上下文上调用一次保存更改,然后将其丢弃。如果您对上下文中的大量实体多次调用保存更改,则您可能没有正确使用它。显然,特殊情况是当您进行事务性操作时。
如果您需要执行某些事务操作,则需要手动打开自己的 SqlConnection 并在其上开始事务,或者需要在 TransactionScope 内打开它。然后,您可以通过传递相同的打开连接来创建 DbContext。您可以一遍又一遍地执行此操作,每次都处理 DbContext 对象,同时保持连接打开。通常,DbContext 会为您处理打开和关闭上下文,但如果您向它传递一个打开的连接,它不会尝试自动关闭它。
这样,您就可以将 DbContext 视为跟踪打开连接上的对象更改的帮助程序。您可以在同一连接上创建和销毁它任意多次,您可以在其中运行事务。了解幕后发生的事情非常重要。
关于asp.net - 在 ASP.Net 上每个 Web 请求创建 dbcontext 的成本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27773553/
Tôi đang cố gắng hiểu sâu hơn về ASP.Net MVC và tôi bắt đầu nhận ra rằng nó trông rất giống với tập lệnh ASP thô. Trước đây, chúng ta tổ chức "mô hình"/mã logic nghiệp vụ thành các lớp VBScript hoặc các thành phần VB COM. Tất nhiên, bây giờ
Tôi đã tìm kiếm một thời gian nhưng có vẻ như không thể tìm ra câu trả lời. Tôi muốn hiển thị một bộ đếm trong băng chuyền của mình với dự án (công việc) hiện tại ở bên trái và tổng số dự án ở bên trái. Mã của tôi:
. Câu trả lời hàng đầu của Scott Gu gọi những khối mã này là. Đó là cách tôi nghĩ. http://weblogs.asp.net/scottgu/archive/2010/04/06/new-lt-gt-syntax
Tôi có một trang web được tạo bằng Visual Studio 2010/.net 4/VB. Tôi thực sự thích giao diện của hệ thống FAQ mà tôi tìm thấy vì nó đơn giản nhưng vẫn mang phong cách asp cổ điển. Vì vậy, rõ ràng là tôi không thể đưa bố cục trang chính của mình vào
Được rồi, câu hỏi này có lẽ đã có câu trả lời khá rõ ràng đối với nhiều người, nhưng nó vẫn khiến tôi bối rối. Tôi có một biểu mẫu web asp.net với hai điều khiển trên đó (thực ra còn nhiều hơn hai điều khiển này, nhưng chúng ta sẽ tập trung vào những điều khiển này) - điều khiển đầu tiên là asp:dr
Khi tôi thiết lập điều khiển ASP.NET CheckBox làm trình kích hoạt postback không đồng bộ cho bảng điều khiển cập nhật asp.net, thuộc tính EventName là gì? Tôi tin rằng câu trả lời tốt nhất là CheckedChanged. Giới thiệu về asp.net - a
Tôi có một trang web (lớn) được viết bằng ngôn ngữ asp cổ điển. Bây giờ tôi phải chuyển sang vb.net (razor). Có cách nào để kết hợp hai thứ này cho đến khi quá trình chuyển đổi hoàn tất không? Có cách nào để làm cho ứng dụng hoạt động với cả asp cổ điển và vb.net không?
Tôi đang tạo một trang sản phẩm, nơi người dùng chọn một tùy chọn trong danh sách nút radio, ví dụ như
Tôi vừa mới chuyển đổi một ứng dụng ASP cổ điển sang ASP.NET 3.5, nhưng tôi cảm thấy phiên bản ASP cổ điển của mình chạy nhanh hơn một chút (có thể là do hối hận vì đã mua, tôi không biết nữa). Vậy các bạn có thể giúp tôi giải đáp thắc mắc này và cho tôi biết cái nào nhanh hơn, asp hay asp.
Bắt đầu từ tuần này, tôi được yêu cầu bắt đầu học cách phát triển trang web bằng ASP. Tôi có một số kinh nghiệm với C# thông qua XNA, nên phần này không gây nhiều khó khăn cho tôi. Tôi đã làm theo Hướng dẫn Cửa hàng âm nhạc yêu cầu tôi phải thiết lập
đóng cửa. Câu hỏi này cần được hỏi một cách tập trung hơn. Hiện tại không chấp nhận câu trả lời. Bạn có muốn cải thiện điều này không? Cập nhật câu hỏi để tập trung vào một vấn đề duy nhất bằng cách chỉnh sửa bài đăng này. Đã đóng 8 năm trước. Cải thiện câu hỏi này
Tôi muốn đăng một số biến biểu mẫu vào trang ASP cổ điển. Tôi không muốn thay đổi các trang ASP cổ điển vì khối lượng công việc cần phải thực hiện và số lượng trang sử dụng chúng. Các trang ASP cổ điển cần phải truyền các biến biểu mẫu Username và Userpas
Hoàn thành. Câu hỏi này đang tìm kiếm các đề xuất về sách, công cụ, thư viện phần mềm, v.v. Nó không đáp ứng được các hướng dẫn của Stack Overflow. Hiện tại không chấp nhận câu trả lời. Chúng tôi không chấp nhận những câu hỏi tìm kiếm lời khuyên về sách, công cụ, thư viện phần mềm, v.v. Bạn có thể chỉnh sửa câu hỏi của mình để
Theo một cách nào đó, đây có thể là một câu hỏi dị giáo. Chúng tôi có một trang web lớn với nhiều trang vẫn còn sử dụng ASP. Thông thường, không có gì thực sự động, mà là các khối HTML được tạo lại theo định kỳ (thông qua SSI hoặc Server.Execute). Có vẻ như một
đóng cửa. Câu hỏi này cần được hỏi một cách tập trung hơn. Hiện tại không chấp nhận câu trả lời. Bạn có muốn cải thiện điều này không? Cập nhật câu hỏi để tập trung vào một vấn đề duy nhất bằng cách chỉnh sửa bài đăng này. Đã đóng 9 năm trước. Cải thiện câu hỏi này
Tôi có một ứng dụng ASP cũ - vào một thời điểm nào đó trong tương lai gần - cần được di chuyển sang ASP.Net 2.0 (để tương thích với các ứng dụng khác cũng sử dụng 2.0). Có cách thực hành tốt nhất nào cho loại việc này không, tức là bước đầu tiên là chuyển đổi html hiện tại thành vbs
Hiện tại tôi đang làm việc cho một công ty sử dụng kết hợp ASP.NET Webforms và các trang ASP cũ để phát triển web. Điều này hoạt động tốt cho dự án hiện tại của họ, nhưng tôi muốn thuyết phục/gợi ý họ chuyển sang ASP.NET MVC vì
Tôi có một ứng dụng asp cổ điển. Tôi muốn đăng mẫu cuộc thi của trang đó lên mẫu Asp.Net. Lý do là tôi muốn sử dụng nhiều logic mà tôi đã xây dựng vào các trang Asp.Net của mình để xác thực trước khi chuyển đến cơ sở dữ liệu và tôi không biết nhiều về asp. Chưa kể đến
Tôi biết trong ASP.NET MVC bạn có thể có một View di động và thực hiện một số thao tác như Index.mobile.cshtml. và _Layout.mobile.cshtml và máy chủ biết cách tải các View này
Tôi cần gọi một hàm VBscript trên một trang asp cổ điển từ một số mã c# .net phía máy chủ - có ai biết cách rõ ràng để thực hiện việc này không? Viết lại hàm trong .net không phải là một lựa chọn. Tôi sẽ giải thích điều này thêm một chút.
Tôi là một lập trình viên xuất sắc, rất giỏi!