Gor*_*ran 5 entity-framework entity-framework-4 ef-code-first
我试图理解为什么DbContext没有检测到多对多关系中的变化.这是我在模型配置中设置的:
this.Configuration.ValidateOnSaveEnabled = false;
this.Configuration.ProxyCreationEnabled = false;
this.Configuration.LazyLoadingEnabled = false;
Run Code Online (Sandbox Code Playgroud)
这是测试代码:
var book = Context.Set<Book>().Where(b => b.Id == 1).Single();
var author = Context.Set<Author>().Where(a => a.Id == 2).Single();
book.Authors.Add(author);
Run Code Online (Sandbox Code Playgroud)
如果我检查更改,它不报告任何:
// returns false
_context.ChangeTracker.Entries().Any(e => e.State == EntityState.Added || e.State == EntityState.Modified || e.State == EntityState.Deleted);
Run Code Online (Sandbox Code Playgroud)
如果我保存更改,则更改会正确更新到数据库.
// 1 record added to BookAuthors table
_context.SaveChanges();
Run Code Online (Sandbox Code Playgroud)
为什么DbContext没有跟踪多对多的变化?WCF不涉及,这是与Sql server的直接连接.
DbContext
没有跟踪更改,因为ChangeTracker
没有包含所有信息.它只能为您提供实体状态,但不能为您提供独立关联状态(即多对多状态和一对多关系状态).如果你想获得许多一对多关系的国家必须获得ObjectContext
并要求ObjectStateManager
在通过@马克Oreta提供的链接描述.
归档时间: |
|
查看次数: |
1393 次 |
最近记录: |