【问题标题】:Using DBContext in repository class在存储库类中使用 DBContext
【发布时间】:2021-11-05 23:43:20
【问题描述】:

我想在我的存储库类中使用我的 DBcontext,但我目前不知道如何使用。我尝试查看其他问题,但它们没有提供针对我的案例所需的答案。

我将从我的控制器开始:

public class MovieController : ControllerBase
{
    IMovieService _movieService;
    public MovieController(IMovieService movieService)
    {
        _movieService = movieService;
    }

服务类:

public interface IMovieService
{
    Movie RetrieveMovie(long id);
    IEnumerable<Movie> RetrieveMovies();
}

public class MovieService : IMovieService
{
    IMovieRepository _movieRepository;

    public MovieService(IMovieRepository movieRepository)
    {
        _movieRepository = movieRepository;
    }

存储库类:

public interface IMovieRepository
{
    Movie GetMovieById(long id);
    IEnumerable<Movie> GetMovies();
}

public class MovieRepository : IMovieRepository
{
    private readonly MusicContext _db;
    public Movie GetMovieById(long id)
    {
        return _db.Movie.Find(id);
    }

数据库上下文:

public class MovieContext : DbContext
{
    public MovieContext(DbContextOptions<MovieContext> options)
        : base(options)
    {
    }

    public DbSet<Movie> Movies { get; set; }
}

最后是我的启动函数:

public void ConfigureServices(IServiceCollection services)
    {
        services.AddDbContext<MovieContext>(options =>                                
        options.UseSqlServer(Configuration.GetConnectionString("MovieContext")));
        services.AddControllers();
        services.AddSwaggerGen(c =>
        {
            c.SwaggerDoc("v1", new OpenApiInfo { Title = "Movie.Api", Version = "v1" });
        });
    }

目前 Visual Studio 警告我 @MusicContext _db 该字段从未分配给我,我得到了。我怎样才能让它工作?

【问题讨论】:

  • 你可以在你的 repository-Class 中添加一个以 MovieContext 作为参数的构造函数,然后 AddScoped();在您的初创公司中……还有其他问题?

标签: c# .net entity-framework


【解决方案1】:

您必须将构造函数添加到 MovieRepository 并使用 DI

public class MovieRepository : IMovieRepository
{
    private readonly MovieContext _db;

    public MovieRepository (MovieContext db)
   {
            _db=db;
   }

    public Movie GetMovieById(long id)
    {
        return _db.Movie.Find(id);
    }
    .....
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-03-24
    • 1970-01-01
    • 2012-02-23
    • 1970-01-01
    • 2019-08-17
    • 1970-01-01
    • 2018-12-31
    • 2015-02-24
    相关资源
    最近更新 更多