I have multiple repositories in my application. Where should I put the ObjectContext? Right now, I have a reference like ObjectContext ctx; in every repository. What is the smartest and safest way to go about this?
C#/EF and the Repository Pattern: Where to put the ObjectContext in a solution with multiple repositories?
3.4k Views Asked by Olsen At
2
There are 2 best solutions below
Related Questions in C#
- Passing arguments to main in C using Eclipse
- kernel module does not print packet info
- error C2016 (C requires that a struct or union has at least one member) and structs typedefs
- Drawing with ncurses, sockets and fork
- How to catch delay-import dll errors (missing dll or symbol) in MinGW(-w64)?
- Configured TTL for A record(s) backing CNAME records
- Allocating memory for pointers inside structures in functions
- Finding articulation point of undirected graph by DFS
- C first fgets() is being skipped while the second runs
- C std library don't appear to be linked in object file
- gcc static library compilation
- How to do a case-insensitive string comparison?
- C programming: Create and write 2D array of files as function
- How to read a file then store to array and then print?
- Function timeouts in C and thread
Related Questions in ENTITY-FRAMEWORK
- Entity Framework Code First with Fluent API Concurrency `DbUpdateConcurrencyException` Not Raising
- How to get primary key value with Entity Framework Core
- How do you add extra property using join
- Is there anyway to set the relationship of many tables from Model?
- ORM Code First versa Database First in Production
- MVC : Insert data to two tables
- Cannot insert a null into column MVC ASP.NET
- System.ComponentModel.DataAnnotations.Schema namespace conflict
- EF 6 interceptor to set connectionstring
- IQueryable<T> OrderBy<T> Extension Fails with Foreign Key Property
- Linq to Entities filter navigation collection properties
- How to generate entity framework code-first migrations without using the package manager console?
- Entity Framework and abstract class
- Validation DataGridView Windows Forms
- Require tool to trace the LInq Queries in Oracle
Related Questions in REPOSITORY
- How to push a Git server repository issues to Github repository?
- escaping values in Spring Data Repository
- Duplicate entry '[X]' for key '[Y]' on JPA repository 'save' operation. Saved entity has its key defined already
- Mock service that takes unitOfWork in constructor
- How to turn local source code directory into remote git repo?
- Migrating Nexus repository manager
- How to configure authentication for access of repository in pom.xml?
- Get Record ID in Entity Framework 5 after insert
- Android Studio Best way import module from other repository
- Repository Pattern with Repository Factory
- Octokit.net Creating new repository
- No Author in SVN Repo Logs
- Attaching an entity of type '' failed because another entity of the same type already has the same primary key value
- mercurial - several projects and repositories
- Symfony2: How to Call functions in Repository class from Type
Related Questions in REPOSITORY-PATTERN
- How to get primary key value with Entity Framework Core
- Is there another way to unit test business logic in mvc
- Async GetMany method in Repository
- Is it okay to create a DTO counterpart of a table in a database assuming its persistent ignorant domain model and the DTO is in the repository?
- Awkward Generic Repository Call
- Set Ninject property to private
- AutoFac does not register api controller
- Repository Pattern with Repository Factory
- A specified Include path is not valid. The EntityType '*Propiedad' does not declare a navigation property with the name 'Nombre'
- How do i make .Include to work on an IEnumerable
- How to use entity framework with business objects
- IEntity where Key/ID type unknown
- Inject parameter into spring-data dynamic query-build methods
- One DbContext Instance spans multiple Repositories
- how can return multiple result set?
Related Questions in OBJECTCONTEXT
- ConnectionString for ObjectContext in MVC raised Login failed for user 'NT AUTHORITY\ANONYMOUS LOGON' error
- How to use ObjectContext.LoadProperty with EnablePlanCaching disabled?
- EF6 Type of context 'System.Data.Entity.Core.Objects.ObjectContext' is not supported
- Entity Framework: context.CreateObjectSet<T> derived entity issue
- How can I get two units of work under a single transaction
- Add EF 6.x EntityObject Generator in Visual Studio 2017
- Silverlight 4 Ria Services and multiple threads
- what's the best practice to attach a entity object which is detached from anthoer ObjectContext?
- EF4: ObjectContext inconsistent when inserting into a view with triggers
- Releasing ObjectContext while using StructureMap
- C#/EF and the Repository Pattern: Where to put the ObjectContext in a solution with multiple repositories?
- Entity Framework 4 Context?
- How to get name of schema from entity framework?
- ExecuteStoreQuery not working with DateTime setter
- Managing Entity Framework ObjectContext in ASP.NET
Trending Questions
- UIImageView Frame Doesn't Reflect Constraints
- Is it possible to use adb commands to click on a view by finding its ID?
- How to create a new web character symbol recognizable by html/javascript?
- Why isn't my CSS3 animation smooth in Google Chrome (but very smooth on other browsers)?
- Heap Gives Page Fault
- Connect ffmpeg to Visual Studio 2008
- Both Object- and ValueAnimator jumps when Duration is set above API LvL 24
- How to avoid default initialization of objects in std::vector?
- second argument of the command line arguments in a format other than char** argv or char* argv[]
- How to improve efficiency of algorithm which generates next lexicographic permutation?
- Navigating to the another actvity app getting crash in android
- How to read the particular message format in android and store in sqlite database?
- Resetting inventory status after order is cancelled
- Efficiently compute powers of X in SSE/AVX
- Insert into an external database using ajax and php : POST 500 (Internal Server Error)
Popular Questions
- How do I undo the most recent local commits in Git?
- How can I remove a specific item from an array in JavaScript?
- How do I delete a Git branch locally and remotely?
- Find all files containing a specific text (string) on Linux?
- How do I revert a Git repository to a previous commit?
- How do I create an HTML button that acts like a link?
- How do I check out a remote Git branch?
- How do I force "git pull" to overwrite local files?
- How do I list all files of a directory?
- How to check whether a string contains a substring in JavaScript?
- How do I redirect to another webpage?
- How can I iterate over rows in a Pandas DataFrame?
- How do I convert a String to an int in Java?
- Does Python have a string 'contains' substring method?
- How do I check if a string contains a specific word?
A design with multiple
ObjectContextinstances is only acceptable if yourRepositorymethods commit the transaction. Otherwise, it is possible that external calls to commit the transaction may not persist everything you intend, because you will hold references to different instances of theObjectContext.If you want to restrict the
ObjectContextto a single instance, then you can build aRepositoryProviderclass that contains theObjectContext, and manages the propagation of repository actions to data commits. This can be best accomplished by either, - Injecting theObjectContextreference into each repository, or - Subscribing the repositories' events toEventHandlers that call the appropriate methods on theObjectContext.The following is a highly pluggable implementation that I have used:
Repository Provider Interface
Repository Factory Interface
The implementation has dependency on an
IEnumerable<IFilteredRepositoryFactory>.So, the implementation looks like:
Repository Provider Class
It should be noted that a new
Repositorywill be created by the first matching factory implementation. So, if the collection of factories contains multiple factories that can create aRepositoryfor the given repositoryType, the firstIFilteredRepositoryFactoryobject in the enumerable will be used and any subsequent factories will be ignored. In addition, if there is no registered factory, and exception will be thrown.