Я работаю над программой, в которой мне нужно добавить автоматически сгенерированное поле и значение в мою базу данных. Итак, чтобы выразить это в контексте, у меня есть программа, в которой я могу выполнять обычные операции CRUD, и это связано с использованием чванства. У меня есть таблица ваучеров, где я хочу автоматически сгенерированное текстовое поле, для которого у меня есть код, и я хочу иметь возможность вводить сумму, и оно автоматически заполняет поля в базе данных. Код выглядит следующим образом:
Мой контроллер ваучеров:
[Route("[controller]")]
[ApiController]
public class VouchersController : ControllerBase
{
private readonly ComicStockContext _context;
private IVoucherService _voucherService;
public VouchersController(ComicStockContext context, IVoucherService voucherService)
{
_context = context;
_voucherService = voucherService;
}
// GET: api/Vouchers
[HttpGet]
public IEnumerable<Vouchers> GetAllVouchers([FromQuery] int page)
{
return _voucherService.GetAllVouchers(page);
}
[HttpGet("generate")]
// code to insert amount and generated string needs to go here
Мой интерфейс для обслуживания ваучеров:
namespace BusinessLogic.ServicesInterfaces
{
public interface IVoucherService
{
IEnumerable<Vouchers> GetAllVouchers(int page);
Vouchers FindVoucherByID(int voucherID);
void InsertVoucher(Vouchers vouchers);
}
}
Мой сервис ваучеров
public class VoucherService: IVoucherService
{
private IVoucherRepository _voucherRepository;
public VoucherService(IVoucherRepository voucherRepository)
{
_voucherRepository = voucherRepository;
}
public IEnumerable<Vouchers> GetAllVouchers(int page)
{
return _voucherRepository.GetAllVouchers(page);
}
public Vouchers FindVoucherByID(int voucherID)
{
return _voucherRepository.FindVoucherByID(voucherID);
}
public void InsertVoucher(Vouchers vouchers)
{
_voucherRepository.InsertVoucher(vouchers);
}
public void InsertGeneratedVoucher(string vouchercode, int amount)
{
String GetVoucherNumber()
{
int size = 20;
StringBuilder builder = new StringBuilder();
Random random = new Random();
char ch;
for (int i = 0; i < size; i++)
{
ch = Convert.ToChar(Convert.ToInt32(Math.Floor(26 * random.NextDouble() + 65)));
builder.Append(ch);
}
return builder.ToString();
}
vouchercode = GetVoucherNumber();
//_voucherRepository.InsertGeneratedVoucher(vouchercode, amount);
}
}
Мой репозиторий ваучеров
public class VoucherRepository: GenericRepository<Vouchers>, IVoucherRepository
{
public VoucherRepository(): base()
{
}
public VoucherRepository(ComicStockContext comicStockContext) : base(comicStockContext)
{
}
public Vouchers FindVoucherByID(int voucherID)
{
return GetById(voucherID);
}
public IEnumerable<Vouchers> GetAllVouchers(int page)
{
return GetAll(page);
}
public void InsertVoucher(Vouchers vouchers)
{
Insert(vouchers);
}
}
}
Мой интерфейс для репозитория ваучеров
{
public interface IVoucherRepository
{
IEnumerable<Vouchers> GetAllVouchers(int page);
Vouchers FindVoucherByID(int voucherID);
void InsertVoucher(Vouchers vouchers);
И мой базовый репозиторий c
{
public class GenericRepository<T> : IGenericRepository<T> where T : class
{
protected ComicStockContext _context = null;
protected DbSet<T> table = null;
public GenericRepository()
{
this._context = new ComicStockContext();
table = _context.Set<T>();
}
public GenericRepository(ComicStockContext context)
{
_context = context;
table = _context.Set<T>();
}
public IEnumerable<T> GetAll(int page)
{
return table.ToList().Skip(25 * page).Take(25);
}
public T GetById(object id)
{
return table.Find(id);
}
public void Insert(T obj)
{
table.Add(obj);
Save();
}
public void Update(T obj)
{
table.Attach(obj);
_context.Entry(obj).State = EntityState.Modified;
Save();
}
public void Delete(object id)
{
T existing = table.Find(id);
table.Remove(existing);
}
public void Save()
{
_context.SaveChanges();
}
}
}
, а также интерфейс для хранилища generi c
public interface IGenericRepository<T> where T : class
{
IEnumerable<T> GetAll(int page);
T GetById(object id);
void Insert(T obj);
void Update(T obj);
void Delete(object id);
void Save();
}
Таким образом, в основном код, который я пытаюсь достичь, я должен быть в состоянии вставить сумму, используя сваггер, например, 100 долларов, и он должен вставить 100 долларов в мой таблица ваучеров вместе с автоматически сгенерированной строкой, а остальные поля должны просто заполняться как Null.