这是我和我的EF问题。我已经成功生成了两个0.1到1关系的实体:
public class File
{
[Key]
public int FileId { get; set; }
public virtual FileData FileData { get; set; }
}
public class FileData
{
[Key]
public int FileDataId { get; set; }
public virtual File File { get; set; }
[Required]
public byte[] Content { get; set; }
}
使用Fluent API定义:
modelBuilder.Entity<File>()
.HasOptional(x => x.FileData)
.WithRequired(x => x.File)
.WillCascadeOnDelete(false);
这会生成我的模型和数据库就好了。我可以很好地向两个表插入新数据,但是当我尝试删除其中一个实体时,我收到错误:
发生了引用完整性约束违规:当依赖对象为Unchanged时,除非将其设置为关联的主体对象,否则无法更改作为参照完整性约束一部分的主键属性。必须跟踪主要对象,并且不标记为删除。
at System.Data.Entity.Core.Objects.ObjectStateManager.DetectConflicts(IList 1 entries)
at System.Data.Entity.Core.Objects.ObjectStateManager.DetectChanges()
at System.Data.Entity.Core.Objects.ObjectContext.DetectChanges()
at System.Data.Entity.Internal.InternalContext.DetectChanges(Boolean force)
at System.Data.Entity.Internal.Linq.InternalSet 1.Remove(Object entity)
at System.Data.Entity.DbSet 1.Remove(TEntity entity)
at ...
请注意,异常来自Remove,而不是来自实际的SaveChanges。
在定义两个实体之间的关系时,我应该如何删除实体或我做错了什么?