2017-01-11 82 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

相关问题