如果我有 User
具有以下属性类:
public Guid UserPreferenceId { get; set; } public virtual DefaultUserPreference UserPreference { get; set; } public Guid SecondaryUserPreferenceId { get; set; } public virtual DefaultUserPreference SecondaryUserPreference { get; set; }
如何通过流畅的API获取此信息?当我尝试运行它时,它说:
在表'Users'上引入FOREIGN KEY约束可能会导致循环或多个级联路径.指定ON DELETE NO ACTION或ON UPDATE NO ACTION,或修改其他FOREIGN KEY约束.无法创建约束.查看以前的错误.
我已经看过其中一些问题,但它们总是涉及一个导航属性和一个集合.这种关系也是单向的,但如果必须是双向的,可能是双向的,不确定是否重要.
实体框架默认创建与Cascade Delete on的关系.创建从一个实体到另一个实体的两个关系会尝试创建两个级联删除关系,数据库将抛出您看到的错误.
使用Code-First Fluent配置删除一个或两个关系上的级联删除:
modelBuilder.Entity() .HasOptional(u => u.UserPreference) .WithMany() .WillCascadeOnDelete(false); modelBuilder.Entity () .HasOptional(u => u.SecondaryUserPreference) .WithMany() .WillCascadeOnDelete(false);