我首先使用EF 5代码,我有2个相关实体ApplicationPermission和Application:
public class ApplicationPermission
{
public virtual Application Application { get; set; }
public int Id { get; set; }
}
public class Application
{
public string Name { get; set; }
public int Id { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
使用ApplicationPermission的以下映射:
HasKey(x => x.Id);
HasRequired(x => x.Application).WithMany().Map(m => m.MapKey("ApplicationId")).WillCascadeOnDelete(false);
Run Code Online (Sandbox Code Playgroud)
和申请:
HasKey(x => x.Id);
Run Code Online (Sandbox Code Playgroud)
我使用下面的代码删除ApplicationPermission:
ApplicationPermission entity = new ApplicationPermission { Id = id };
DbContext.Set<ApplicationPermission>().Attach(entity);
DbContext.Set<ApplicationPermission>().Remove(entity);
DbContext.SaveChanges();
Run Code Online (Sandbox Code Playgroud)
但我在SaveChanges方法上遇到错误:
'CodeFirstContainer.ApplicationPermissions'中的实体参与'ApplicationPermission_Application'关系.找到0个相关的'ApplicationPermission_Application_Target'.1'ApplicationPermission_Application_Target'是预期的.
如何在不将Application加载到dbcontext的情况下删除ApplicationPermission?