Я программирую библиотечное приложение в MVC. Я впервые использую подключение к базе данных и Dapper . MVC для SQLite
Моя база данных выглядит так:
- Название таблицы: SubscriberBook
- Столбцы: SubscriberId / BookId / BorrowDate / ReturnDate
Когда создается заем, ReturnDate устанавливается в ноль.
Когда подписчик возвращает книгу, я хочу сохранить другие данные и ОБНОВИТЬ ReturnDate с текущей датой, например DateTime.now.Ticks.
Модель:
public class SubscriberBookEntity
{
public int BookId { get; set; }
public int SubscriberId { get; set; }
public DateTime BorrowDate { get; set; }
public DateTime ReturnDate { get; set; }
}
Контроллер, вызов Create + Update:
[HttpPost]
public ActionResult SubscriberBorrow(Borrow borrow)
{
SubscriberEntity subscriberEntity = new SubscriberEntity();
SubscriberBookEntity subscriberBookEntity = new SubscriberBookEntity();
List<SubscriberBookEntity> subscriberBookEntityList = new List<SubscriberBookEntity>();
subscriberBookEntityList = Manager.GetAllBorrow();
foreach (Book borrowBook in borrow.Library.BookList)
{
if (borrowBook.IsChecked && Error == false)
{
subscriberBookEntity.DateEmprunt = DateTime.Now;
subscriberBookEntity.DateRetour = new DateTime();
Manager.CreateBorrow(borrow.SelectedSubscriberId, borrowBook.Id, subscriberBookEntity.DateEmprunt, subscriberBookEntity.DateRetour);
subscriberBookEntityList = Manager.GetAllBorrow();
}
}
if (borrow.Button.Equals("Return"))
{
foreach (Book borrowBook in borrow.Library.BookList)
{
if (borrowBook.IsChecked)
{
subscriberBookEntity.ReturnDate = DateTime.Now;
Manager.UpdateBorrow(subscriberBookEntity);
}
}
Создать:
public static void CreateBorrow(int subscriberId, int bookId, DateTime dateEmprunt, DateTime dateRetour)
{
using (var connection = new SQLiteConnection(GetConnectionString()))
{
connection.Execute("INSERT INTO SubscriberBook (SubscriberId, BookId, DateEmprunt) VALUES (@subscriberId, @bookId, @dateEmprunt)",
new
{
SubscriberId = subscriberId,
BookId = bookId,
DateEmprunt = dateEmprunt.Ticks,
});
}
}
Получить:
public static List<SubscriberBookEntity> GetAllBorrow()
{
using (var connection = new SQLiteConnection(GetConnectionString()))
{
return connection.Query<SubscriberBookEntity>("SELECT BookId, SubscriberId FROM SubscriberBook").ToList();
}
}
Обновление:
public static void UpdateBorrow(SubscriberBookEntity subscriberBookEntity)
{
using (var connection = new SQLiteConnection(GetConnectionString()))
{
if(subscriberBookEntity != null)
{
connection.Execute("UPDATE SubscriberBook SET ReturnDate = @returnDate WHERE BookId = @bookId AND SubscriberId = @subscriberId",
new
{
returnDate = subscriberBookEntity.ReturnDate.Ticks,
bookId = subscriberBookEntity.BookId,
subscriberId = subscriberBookEntity.SubscriberId,
});
}
}
}
Я не получил ошибку, но ничего не изменилось в моей базе данных. Значение ReturnBorrow по-прежнему равно нулю.
Спасибо за ваше терпение и вашу помощь.