Я пытаюсь создать веб-API. Я использую Entity Framework здесь, код первый подход.
Это n-уровневая архитектура. То есть я создал несколько проектов в одном решении, как показано ниже.
У меня есть метод контроллера, который является методом get. Я передам userid в качестве параметра.
[Route("api/[controller]")]
[ApiController]
public class BankController : ControllerBase
{
private readonly IBankApplicationDAL _bankAPI;
public BankController(IBankApplicationDAL bankAPI)
{
_bankAPI = bankAPI;
}
[HttpGet("{userId}")]
public IActionResult GetAccountDetailsId(int userId)
{
try
{
var values = _bankAPI.GetAccountDetailsId(userId);
return Ok(values);
}
catch
{
throw;
}
}
}
В слое DAL вот что у меня есть:
using BankApplicationAPI.Model;
using BankApplicationAPI.Data;
using System;
using System.Linq;
namespace BankApplicationAPI.DAL
{
public class BankApplicationDAL : IBankApplicationDAL
{
DataContext context;
public AccountDetails GetAccountDetailsId(int userId)
{
try
{
var values = context.AccountDetails.FirstOrDefault(x => x.UserId == userId); // context is null here.
return values;
}
catch (Exception ex)
{
throw;
}
}
}
}
Это DataContext
У меня есть:
namespace BankApplicationAPI.Data
{
public class DataContext : DbContext
{
public DataContext(DbContextOptions<DataContext> options) : base(options) { }
public DbSet<AccountDetails> AccountDetails { get; set; }
public DbSet<TransactionDetails> TransactionDetails { get; set; }
}
}
Когда я запускаю это приложение, я получаю исключение, в котором говорится, что контекст в методе DAL равен нулю (где я добавил комментарий).
Как мне создать объект для DataContext
? Может ли кто-нибудь помочь мне здесь? Это очень важно. Большое спасибо.
EDIT
Startup.cs
public void ConfigureServices(IServiceCollection services)
{
var connection = @"Server=.\sqlexpress;Database=AppDB;Trusted_Connection=True;ConnectRetryCount=0";
services.AddDbContext<DataContext>(x => x.UseSqlServer(connection));
services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_2);
services.AddSingleton<IBankApplicationDAL, BankApplicationDAL>();
}