MVC + SQLite:UPDATE不起作用。句法?

问题描述 投票:-2回答:1

我正在MVC中编写一个库应用程序。我正在使用第一次连接到数据库和Dapper。 MVC到SQLite

我的数据库看起来像:

  • 表名:SubscriberBook
  • 列:SubscriberId / BookId / BorrowDate / ReturnDate

创建借位时,ReturnDate设置为null。

当订阅者返回一本书时,我想保留其他数据和UPDATE 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的值仍为null。

感谢您的耐心和帮助。

c# sqlite
1个回答
0
投票

经过一些调查后,控制器中“返回”的代码不使用正确的变量。

更正后:

if (borrow.Button.Equals("Retourner"))
        {
            foreach (SubscriberBookEntity subscriberBookEntity in subscriberBookEntityList)
            {
                foreach(Book borrowBook in borrow.Library.BookList)
                {
                    if(borrowBook.IsChecked && borrowBook.Id == subscriberBook.BookId && subscriberBook.SubscriberId == borrow.SelectedSubscriberId)
                    {
                        subscriberBook.DateRetour = DateTime.Now;
                        Manager.UpdateBorrow(subscriberBook);
                    }
                }
            }

            List<SubscriberBookEntity> SubscriberBookEntityList = Manager.GetAllBorrow();

        }

感谢@Steve和@Patrick Hofman的建议。

© www.soinside.com 2019 - 2024. All rights reserved.