我有一張名為的表Table_Books,我將每本書的書數保留為int. 當用戶租一本書時,我想減少資料庫中的書籍數量。當它為 0 時,應該會出現類似“您不能租借這本書”的警告。我怎樣才能做到這一點?
我的“租一本書”方法(即使它減少了,資料庫中沒有任何變化):
[HttpPost]
public ActionResult RentBook(Table_Books book)
{
User data = TempData["userdata"] as User ;
if (data == null)
{
ViewBag.ErrorMessage = "error!";
return RedirectToAction("index", "login");
}
else
{
Table_RentedBooks = new Table_RentedBooks ();
var tbookid = book.BookID;
var numberofbooks1=book.NumberofBooks-1;
book.NumberofBooks= numberofbooks1;
bookrepo.Update(book);
db.SaveChanges();
DateTime d1= DateTime.Now;
DateTime recorddate= d1;
DateTime deliverydate= d1.AddDays(14);
z.DeliveryDate = deliverydate;
z.RecordDate = recorddate;
z.UserID = data.UserID;
z.BookID = tbookid;
rentedrepo.Add(z);
return RedirectToAction("index", "Home");
}
}
我的存盤庫方法
public class GenericRepository<T> where T:class,new()
{
LibraryEntities db = new LibraryEntities();
public List<T> List()
{
return db.Set<T>().ToList();
}
public void Add(T par)
{
db.Set<T>().Add(par);
db.SaveChanges();
}
public void Update(T par)
{
db.SaveChanges();
}
public T TGet(int id)
{
return db.Set<T>().Find(id);
}
public T Find(Expression<Func<T,bool>> where)
{
return db.Set<T>().FirstOrDefault(where);
}
public void Delete(T par)
{
db.Set<T>().Remove(par);
db.SaveChanges();
}
}
<connectionStrings>
<add name="LibraryEntities" connectionString="metadata=res://*/Models.Model1.csdl|res://*/Models.Model1.ssdl|res://*/Models.Model1.msl;provider=System.Data.SqlClient;provider connection string="data source=(localdb)\Local;initial catalog=Library;integrated security=True;MultipleActiveResultSets=True;App=EntityFramework"" providerName="System.Data.EntityClient" />
</connectionStrings>
uj5u.com熱心網友回復:
你的資料沒有改變的原因是你正在修改你從你的帖子請求中得到的書,而你的 DbContext 沒有跟蹤它。有2個解決方案:
1.您可以先從dbContext中檢索書,然后修改它并呼叫saveChange()
2.您應該在保存更改之前將物體的狀態更改為已修改。像這樣的東西:
public void Update(T par)
{
db.Entry(book).State =
Microsoft.EntityFrameworkCore.EntityState.Modified;
db.SaveChanges();
}
uj5u.com熱心網友回復:
盡管您說 AppData 檔案夾為空,但鑒于您的 connectionString,我很確定您的資料正在重新生成。看看這個鏈接。特別相關的是:
LocalDB 安裝程式使用 SqlLocalDB.msi 程式在計算機上安裝必要的檔案。安裝后,LocalDB 是 SQL Server Express 的一個實體,可以創建和打開 SQL Server 資料庫。資料庫的系統資料庫檔案存盤在本地 AppData 路徑中,該路徑通常是隱藏的。例如,C:\Users<用戶>\AppData\Local\Microsoft\Microsoft SQL Server 本地 DB\Instances\LocalDBApp1。用戶資料庫檔案存盤在用戶指定的位置,通常在 C:\Users<user>\Documents
檔案夾中的某處。
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/504186.html
標籤:C# sql服务器 asp.net-mvc
