У меня проблема, мой DbContext не обновляет элементы внутри моего DbSet для некоторых конкретных случаев.ASP.NET EF - DbSet DbContext не обновляется
У меня есть два проекта: Backend (где файл .mdf и файл строки подключения) и WCF Service Project (где ссылка (добавить существующий элемент) в .mdf и файл строки подключения).
В моей Backend Project У меня есть следующие:
namespace BackEnd
{
public static class CategoryEngine
{
public static void InsertCategory(string categoryName, string categoryDescription)
{
using (var db = new DiamondsDbContext())
{
db.CategorySet.Add(new Category { Name = categoryName, Description = categoryDescription });
db.SaveChanges();
db.Dispose();
}
}
public static List<Category> SelectCategory()
{
using (var db = new DiamondsDbContext())
{
return db.CategorySet.ToList();
}
}
}
namespace BackEnd.DAL
{
public class DiamondsDbContext : DbContext
{
public DiamondsDbContext()
: base("DefaultConnection")
{
}
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Conventions.Remove<PluralizingTableNameConvention>();
}
public DbSet<Category> CategorySet { get; set; }
}
}
В моем проекта WCF Service:
namespace API
{
[ServiceBehavior(IncludeExceptionDetailInFaults = true)]
public class Diamond : IDiamond
{
public List<Category> SelectCategory()
{
return CategoryEngine.SelectCategory();
}
public void InsertCategory(Category category)
{
CategoryEngine.InsertCategory(category.Name, category.Description);
}
}
}
Рабочие Сценарии:
- Я открываю свое представление в проектах Backend ASP Web Project (Insert/Select) работает отлично каждый раз.
Не Работающие Сценарии:
DbSet изначально 4 шт
- Я открываю http://localhost:8080/diamond/category показывает 4 шт (OK)
- I Открыть мой взгляд в Backend ASP кадры показывает 4 пункты (ОК)
- Я добавляю один элемент из моего Backend ASP показывает 5 элементов (ОК)
- Я снова открыть мой http://localhost:8080/diamond/category показывает все еще 4 пунктов (NOT OK)
Мой файл web.config в Backend Project:
<configuration>
<configSections>
<section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
</configSections>
<connectionStrings configSource="ConnectionString.config">
</connectionStrings>
<!-- more stuff not related with the issue -->
</configuration>
Мой файл web.config в службе WCF Проект:
<configuration>
<configSections>
<section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
</configSections>
<connectionStrings configSource="ConnectionString.config">
</connectionStrings>
</configuration>
Мой ConnectionString.config файл существующий в проекте Backend и связан в проекте службы WCF:
<connectionStrings>
<!--<add name="DefaultConnection" connectionString="Data Source=(LocalDb)\MSSQLLocalDB;Integrated Security=True" providerName="System.Data.SqlClient" />-->
<!--<add name="DefaultConnection" connectionString="Server=(localdb)\diamonds4;Integrated Security=true" providerName="System.Data.SqlClient" />-->
<add name="DefaultConnection" connectionString="Data Source=(localdb)\teste123;AttachDbFilename=|DataDirectory|77Diamonds.mdf;Integrated Security=True" providerName="System.Data.SqlClient" />
</connectionStrings>
Решение Изображение может быть, это помогает:
Вы уверены, что тот же файл базы данных используется как для ФОС и проектов ASP.NET? – Evk
Да, это так, потому что, если я остановлю все приложение и снова запустив страницу службы, вы увидите обновленную вставку ... также я использую только файл mdf во всем решении. – TiagoM