Я хочу использовать 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#
Место общения программистов C#
1713252568
Anonymous
Я хочу использовать 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;
}
}
}
}
Подробнее здесь: [url]https://stackoverflow.com/questions/78332829/using-multiple-ef-core-dbcontexts-in-a-single-application-in-clean-architecture[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия