how do I access the DB Context from application layer ?
I am trying to run code similar to below in application Layer :
using (var ctx = new TestContext()) { ctx.AuditEntries.Where(item); ctx.AuditEntries.Where<Entity_Basic>(item.ID); ctx.AuditEntries.Where<Entity_Basic>(101); }
Can you point me to the right direction ?
5 Answer(s)
-
0
To be more speicifc I am trying to use :
<a class="postlink" href="https://github.com/zzzprojects/EntityFramework-Plus/wiki/EF-Audit-%7C-Entity-Framework-Audit-Trail-Context-and-Track-Changes">https://github.com/zzzprojects/EntityFr ... ck-Changes</a>
I am now trying to access the Audit entry table using the code like this :
using (var ctx = new CORPACCOUNTINGDbContext()) {
var auditlog = Z.EntityFramework.Plus.AuditExtensions.Where<MyTable>(ctx.AuditEntries, Id).ToList(); }
It works fine if I put in a custom repository but I would like to create a repository which can pass "MyTable" as a parameter to the custom repository and use it wherever i like.
Else I need a way where I can access the DB context from application layer.
I tried injecting the IDbcontextprovider but probably I am not doing the right way, could you please let me know how to access the DB context from application layer.
-
0
Hi,
This should work:
public class YourAppService : YourAppServiceBase, IYourAppService { private readonly IDbContextProvider<YourDbContext> _dbContextProvider; public YourAppService(IDbContextProvider<YourDbContext> dbContextProvider) { _dbContextProvider = dbContextProvider; } public void MyMethod() { var people = _dbContextProvider.GetDbContext().Persons.ToList(); } }
-
0
That's the problem i am struggling with
private readonly IDbContextProvider<YourDbContext> _dbContextProvider;
I am unable to access my the DB context while declaring. It doesn't show up in intellisense as well as when i copy paste too it's doesn't recongize.
Am I missing something here .
-
0
Your .Application project probably does not have a reference to the .EntityFramework project. Just add a reference for it.
-
0
Thank You Hilkan.
That worked, but I had put a Application reference in the Entityframework few days back. So it was throwing a circular reference error.
I removed the Application reference from Entityframework and added the Entityframework reference in application and it worked.
Thank you so much.