Sql 实体框架6-保存更改
我正在尝试使用EF 6执行插入 我已验证是否连接到数据库,因为我可以读取:Sql 实体框架6-保存更改,sql,asp.net-mvc,entity-framework,entity-framework-6,Sql,Asp.net Mvc,Entity Framework,Entity Framework 6,我正在尝试使用EF 6执行插入 我已验证是否连接到数据库,因为我可以读取: List<Driver> drivers = DataContext.Drivers.ToList(); 除了没有插入任何内容之外,changetracker似乎显示它没有检测到任何更改。我还看到了使用.Attach的建议,但结果相同 我做错了什么有什么帮助吗 干杯 (MyEntities.Context.cs) 公共类SqlDataService:DataServiceBase { //我试图用上面
List<Driver> drivers = DataContext.Drivers.ToList();
除了没有插入任何内容之外,changetracker似乎显示它没有检测到任何更改。我还看到了使用.Attach
的建议,但结果相同
我做错了什么有什么帮助吗
干杯
(MyEntities.Context.cs)
公共类SqlDataService:DataServiceBase { //我试图用上面的代码进行插入
编辑:禁止先不使用代码(我不知道!)不确定上面的代码示例是否有用,但显示我如何设置我的类似乎您已在代码中的某个位置关闭了自动跟踪更改。 尝试在添加之前添加此行:
var driver = new Driver();
driver.DriverName = "Blah";
//Turning Automatic changes tracking on:
DataContext.Configuration.AutoDetectChangesEnabled = true;
DataContext.Drivers.Add(driver);
DataContext.ChangeTracker.HasChanges(); //True
DataContext.SaveChanges();
注意:
自动检测更改启用
通常出于性能考虑关闭您是否先使用代码?如果是,请提供您的上下文类您在MyDataContext
中还做了什么?通常,向DbSet
中添加项目会导致更改跟踪器中的更改。这与其他mo类似你确实阻止了这一切。
public partial class MyEntities : DbContext
{
public MyEntities()
: base("name=MyEntities")
{
}
public partial class MyDataContext : MyEntities
{
public class SqlDataService : DataServiceBase<...Data.MyDataContext>
{
//where I am trying to do the insert with the code above
var driver = new Driver();
driver.DriverName = "Blah";
//Turning Automatic changes tracking on:
DataContext.Configuration.AutoDetectChangesEnabled = true;
DataContext.Drivers.Add(driver);
DataContext.ChangeTracker.HasChanges(); //True
DataContext.SaveChanges();