2017-01-11 84 views
0

我想爲我管理的數據庫創建一行。 我試圖建立一個代碼作爲例子來檢查,如果它的工作,但它不會更新數據庫:實體框架的DBContext不更新數據庫

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; } 
} 

Mapping of the entity framework

+4

完整的映射請發佈完整的源代碼。 –

+0

哪個數據庫沒有更新?我的意思是你如何驗證這個問題? – Mahdi

+2

它會拋出異常嗎? – AdrienTorris

回答

1

您應該刪除代碼的不必要/ extranious零件,並創建一個MVE (Minimal, Complete, and Verifiable example)進行測試。

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
+0

它只是不更新​​我的數據庫,並沒有拋出任何異常。 我正在通過觀察數據庫中的數據來檢查它,並且我看到它保持不變。我已經更新了問題中的映射 – Refi

相關問題