【发布时间】: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