Я хочу использовать 2 DbContext, но в моем репозитории появилось исключение
В исключении я получил следующее:
"ex = {"Задача была отменена."}"
ChangeTracker = «Context.ChangeTracker» выдал исключение типа «System.ObjectDisposeException».
Спасибо за помощь
настройка приложения:
{
"Logging": {
"LogLevel": {
"Default": "Information",
"Microsoft.AspNetCore": "Warning"
}
},
"AllowedHosts": "*",
"ConnectionStrings": {
"HisClinicConnection": "Data Source=mldhsp24;Initial Catalog=HisClinic;Persist Security Info=True;TrustServerCertificate=True;User ID=******;Password=*******",
"TaaminDbConnection": "Data Source=mldhsp24;Initial Catalog=TaminSend;Persist Security Info=True;TrustServerCertificate=True;User ID=********;Password=*******"
}
}
program.cs
using MiladTaamin.Data.Context;
using Microsoft.EntityFrameworkCore;
using Microsoft.OpenApi.Models;
using MiladTaamin.Ioc;
var builder = WebApplication.CreateBuilder(args);
// Add DbContext
builder.Services.AddDbContext(options =>
options.UseSqlServer(builder.Configuration.GetConnectionString("TaaminDbConnection")));
builder.Services.AddDbContext(options =>
options.UseSqlServer(builder.Configuration.GetConnectionString("HisClinicConnection")));
builder.Services.AddDependencies();
// Add services to the container.
builder.Services.AddControllers();
// Learn more about configuring Swagger/OpenAPI at https://aka.ms/aspnetcore/swashbuckle
builder.Services.AddEndpointsApiExplorer();
// Add Swagger
builder.Services.AddSwaggerGen(c =>
{
c.SwaggerDoc("v1", new OpenApiInfo { Title = "Taamin", Version = "v1", Description = "Milad Taamin Api Services - 2024 " });
// Include the XML comments from your controllers
});
var app = builder.Build();
// Configure the HTTP request pipeline.
if (app.Environment.IsDevelopment())
{
app.UseSwagger();
app.UseSwaggerUI();
}
app.UseAuthorization();
app.MapControllers();
app.Run();
Контейнер зависимостей:
using Microsoft.Extensions.DependencyInjection;
using MiladTaamin.Application.Services.Implementations;
using MiladTaamin.Application.Services.Interfaces;
using MiladTaamin.Data.Repositories.Taamin;
using MiladTaamin.Domain.Interfaces;
using MiladTaamin.Domain.Interfaces.Taamin;
using MiladTamin.Data.Repositories;
using MiladTamin.Domain.Interfaces;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace MiladTaamin.Ioc
{
public static class DependencyContainer
{
public static void AddDependencies(this IServiceCollection services)
{
services.AddScoped(typeof(IRepository), typeof(Repository));
services.AddScoped(typeof(IHisClinicGenericRepository), typeof(Repository));
services.AddScoped();
services.AddScoped();
services.AddScoped();
}
}
}
Первый контекст базы данных:
using Microsoft.EntityFrameworkCore;
using Microsoft.Extensions.Configuration;
using MiladTaamin.Domain.Entities.Taamin;
using MiladTaamin.Domain.Entities;
using System;
namespace MiladTaamin.Data.Context
{
public class MiladTaaminDbContext : DbContext
{
public MiladTaaminDbContext(DbContextOptions options): base(options){}
public DbSet TaminResults { get; set; }
}
}
Второй контекст базы данных:
using Microsoft.EntityFrameworkCore;
using MiladTaamin.Domain.Entities.HisClinic;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace MiladTaamin.Data.Context
{
public class HisClinicDbContext: DbContext
{
public HisClinicDbContext(DbContextOptions options): base(options){ }
public DbSet TemporaryReception { get; set; }
public DbSet ReceptionStatus { get; set; }
}
}
Репозиторий:
using Microsoft.EntityFrameworkCore;
using MiladTaamin.Data.Context;
using MiladTaamin.Domain.Entities.HisClinic;
using MiladTaamin.Domain.Entities.Taamin;
using MiladTaamin.Domain.Enums;
using MiladTaamin.Domain.Interfaces.Taamin;
using MiladTamin.Data.Repositories;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace MiladTaamin.Data.Repositories.Taamin
{
public class HisClinicRepository : HisClinicGenericRepository, IHisClinicRepository
{
public HisClinicRepository(HisClinicDbContext context) : base(context) { }
public async Task GetSuccessTemporaryReception(ExcelType type, string Date)
{
try
{
var result = await Context.TemporaryReception.FirstOrDefaultAsync(x => x.Id.Equals(10004));
return result;
}
catch (Exception ex)
{
throw;
}
}
}
}
Подробнее здесь: https://stackoverflow.com/questions/783 ... chitecture
Использование нескольких EF Core DbContexts в одном приложении в чистой архитектуре ⇐ C#
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
-
Как использовать несколько DbContexts в одном выражении запроса в Entity Framework Core
Anonymous » » в форуме C# - 0 Ответы
- 24 Просмотры
-
Последнее сообщение Anonymous
-
-
-
Правильное использование Google API (навигация) в чистой архитектуре Android
Anonymous » » в форуме Android - 0 Ответы
- 28 Просмотры
-
Последнее сообщение Anonymous
-