Entity Framework 6
MockQueryable
Our great sponsors
Entity Framework 6 | MockQueryable | |
---|---|---|
2 | 5 | |
1,407 | 701 | |
0.3% | - | |
8.3 | 5.3 | |
6 days ago | about 2 months ago | |
C# | C# | |
MIT License | MIT License |
Stars - the number of stars that a project has on GitHub. Growth - month over month growth in stars.
Activity is a relative number indicating how actively a project is being developed. Recent commits have higher weight than older ones.
For example, an activity of 9.0 indicates that a project is amongst the top 10% of the most actively developed projects that we are tracking.
Entity Framework 6
-
ASP.NET Performance optimization question
Additionally, an individual context will also cache the actual sql being performed and their docs go over the caching it does here regarding that.
-
Ask HN: What tangible benefits did you get from spending time on HN?
Every so often, posts from Bruce Dawson's blog get posted here - one such post was about using Event Tracing for Windows to diagnose an issue with an NTFS lock being held causing 63 cores to idle while 1 does all the work.
https://randomascii.wordpress.com/2019/10/20/63-cores-blocke...
A few months later, some other people in my team were struggling to diagnose an issue in production where a legacy webapp was struggling to scale up and fully use all 64 cores of the server we needed it to run on. I stepped in to help and remembered that post I'd seen on HN. We used ETW (through Windows Performance Recorder and Windows Performance Analyzer) to profile our app and I looked into the Wait Analysis. Turns out that Entity Framework 6 uses a ReaderWriterLockSlim to guard a cache, and that particular lock performs extremely poorly under heavy contention. Heavy in our case meant that for a single page build of one of this app's "hot path" pages, this lock would be taken a few hundred thousand times. We weren't the first to discover this:
https://github.com/dotnet/ef6/issues/1500
What some other people in my team were struggling with for about two weeks was resolved in a single day thanks to me goofing off and reading HN. (We ultimately used a fork of EF6 that didn't suffer from this issue to solve our problem)
MockQueryable
- Creating a new DbContext in tests is slow
- Mock JSON Database .NET Core + GraphQL Help
-
Should you use the Repository Pattern? With CQRS, Yes and No!
The repository proponents are mostly trying to reduce the interface you need to mock in order to test your business logic, especially with unit testing, not integration testing. If you're just depending on the db context, (and you're mocking with the really awesome MockQueryable library) the tester needs to know exactly which parts of the db context are being used. This is not how unit testing should work. When writing unit tests, you shouldn't have to know that much about the internal behaviour of the thing you are trying to mock.
- How can I mock a lambda where expression?
What are some alternatives?
PetaPoco - Official PetaPoco, A tiny ORM-ish thing for your POCO's
Entity Framework - EF Core is a modern object-database mapper for .NET. It supports LINQ queries, change tracking, updates, and schema migrations.
Dapper - Dapper - a simple object mapper for .Net [Moved to: https://github.com/DapperLib/Dapper]
Detached-Mapper - An ORM friendly mapper. Allows saving entire entity graphs. Heavily inspired in GraphDiff and AutoMapper.
NHibernate - NHibernate Object Relational Mapper
App.Metrics - App Metrics is an open-source and cross-platform .NET library used to record and report metrics within an application.
ServiceStack.OrmLite - Fast, Simple, Typed ORM for .NET
Audit.NET - An extensible framework to audit executing operations in .NET and .NET Core.
LINQ to DB - Linq to database provider.
NSubstituteVsMoq - Moq vs NSubstitute comparison
FluentMigrator - Fluent migrations framework for .NET
WireMock.Net - WireMock.Net is a flexible product for stubbing and mocking web HTTP responses using advanced request matching and response templating. Based on the functionality from http://WireMock.org, but extended with more functionality.