删除0..1到1关系

时间:2016-09-15 12:43:21

标签: c# entity-framework

这是我和我的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。

在定义两个实体之间的关系时,我应该如何删除实体或我做错了什么?

0 个答案:

没有答案