Ice*_*ind 18 c# sql-server-2008 entity-framework-4.1 asp.net-mvc-3
我有一个MVC Web应用程序,它使用SQL Server 2008作为后端数据库以及实体框架.应用程序运行正常,从数据库中提取数据就好了.我的问题是,当它对数据进行更新时,它似乎没有保存它.我正在使用以下功能:
public void SaveProduct(Product product)
{
if (product.ProductID == 0)
{
context.Products.Add(product);
}
context.SaveChanges(); // Breakpoint here
}
Run Code Online (Sandbox Code Playgroud)
此功能在我的存储库代码中定义.我在上面评论的行上设置了一个断点,应用程序在该行处断开,所以我知道它击中该行并且上下文对象中的更改都很好.没有错误发生,EF根本就没有保存更改.
我相信我的连接字符串是正确的,因为它提取数据很好,但在这里它是以防万一:
<connectionStrings>
<add name="EFDbContext" connectionString="Data Source=localhost;Initial Catalog=WarehouseStore;Integrated Security=True;Pooling=False" providerName="System.Data.SqlClient"/>
</connectionStrings>
Run Code Online (Sandbox Code Playgroud)
任何人都有任何想法可能会导致这种情况?
veb*_*ock 36
如果您在插入/更新功能之后,则必须涵盖以下两种情况:
if (product.ProductID == 0)
{
context.Entry(product).State = EntityState.Added;
}
else
{
context.Entry(product).State = EntityState.Modified;
}
context.SaveChanges();
Run Code Online (Sandbox Code Playgroud)
感谢@veblok,我找到了问题的解决方案。默认情况下,DbContext 类中有一个选项可以防止 EF 跟踪对象。删除后,EF 开始按预期运行。
public class My Context : DbContext {
public MyContext()
{
// REMOVE this or use veblok's solution
this.Configuration.AutoDetectChangesEnabled = false;
}
...
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
45099 次 |
最近记录: |