簡體   English   中英

實體框架的DBContext不更新數據庫

[英]Entity Framework's DBContext doesn't update database

我正在嘗試為我管理的數據庫創建一行。 我嘗試構建一個代碼作為示例來檢查其是否正常運行,但是它不會更新數據庫:

PolicyList = await LoadPolicy(); //Loads Policy List
            tblPolicy tbl = new tblPolicy(); //Creates a new policy entity
            tbl.polID = 5; //Sets ID to 5
            tbl.polName = "Ryder"; //Sets name
            mdbe.tblPolicies.Add(tbl); //Adds to the dbcontext object
            mdbe.Entry(tbl).State = EntityState.Added; //Changes the state to "Added"
            await mdbe.SaveChangesAsync(); //Saves changes

無論我是否使用異步方法都行不通,EntityState.Added也是如此。 如何保存更改?

private async Task<List<tblPolicy>> LoadPolicy()
    {
        return await Task.Run(() => mdbe.tblPolicies.ToList());
    }

mdbe定義:

    EntryDBEntities mdbe = new EntryDBEntities();

POCO的entryDBentities類:

public partial class EntryDBEntities : DbContext
{
    public EntryDBEntities()
        : base("name=EntryDBEntities")
    {
    }

    protected override void OnModelCreating(DbModelBuilder modelBuilder)
    {
        throw new UnintentionalCodeFirstException();
    }

    public virtual DbSet<tblEntry> tblEntries { get; set; }
    public virtual DbSet<tblEntryPolicy> tblEntryPolicies { get; set; }
    public virtual DbSet<tblPolicy> tblPolicies { get; set; }
}

實體框架的映射

您應該刪除代碼中不必要的/多余的部分,並創建一個MVE( 最小,完整和可驗證的示例 )進行測試。

using(EntryDBEntities mdbe = new EntryDBEntities())
{
  // PolicyList = await LoadPolicy(); // do not include this, it has nothing to do with adding a new entity based on the code you have shown
  tblPolicy tbl = new tblPolicy(); //Creates a new policy entity
  tbl.polID = 5; //Sets ID to 5
  tbl.polName = "Ryder"; //Sets name
  mdbe.tblPolicies.Add(tbl); //Adds to the dbcontext object
  await mdbe.SaveChangesAsync(); //Saves changes
}

上面的片段應在基礎數據庫中添加一個新的tblPolicy ,這是執行此操作所需的最低代碼。

如果此“行不通”,請提供以下信息:

  1. 它怎么不起作用? 如果拋出異常,請提供異常的所有屬性(堆棧跟蹤,消息,類型,以及內部異常的屬性)。
  2. 如果看不到結果,請說明您如何檢查商店是否未創建/添加實體? 從VS執行應用程序時,就像在本地數據庫上覆蓋.mdf文件一樣簡單。
  3. 包括實體tblPolicy的完整映射

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM