2017-01-11 7 views
0

Я пытаюсь создать строку для базы данных, которой я управляю. Я попытался построить код в качестве примера, чтобы проверить, если он работает, но не обновляет базу данных:DBContext Entity Framework не обновляет базу данных

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(); 

класс ПОКО из 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. Как это не работает? Если выбрано исключение, предоставьте все свойства Exception (stacktrace, message, type и same для внутренних исключений).
  2. Если вы не видите результата, пожалуйста, опишите, как вы проверяете хранилище, что ваш объект не был создан/добавлен? Это может быть так просто, как вы переопределяете файл .mdf на локальном db при выполнении своего приложения из VS.
  3. Включить полное отображение для объекта tblPolicy
+0

Он просто не обновляет мою базу данных и не вызывает никаких исключений. Я проверяю его, просматривая данные в базе данных, и вижу, что он остается прежним. Я обновил отображение в вопросе – Refi

Смежные вопросы