ef-code-first – 使用共享主键关联时EF 4.1 Code中的级联删除规则
发布时间:2020-05-24 12:30:39 所属栏目:MsSql 来源:互联网
导读:我基于这个答案实现了双向1:1关系: Primary /Foreign Key in Entity Framework 我这样定义双向关系: public class Student{ public virtual int StudentId { get; set; } public virtual Anamnesis Anamnesis { get; set; }
|
我基于这个答案实现了双向1:1关系: Primary /Foreign Key in Entity Framework 我这样定义双向关系: public class Student
{
public virtual int StudentId { get; set; }
public virtual Anamnesis Anamnesis { get; set; }
. . .
}
public class Anamnesis
{
[Key,ForeignKey("Student")]
public int AnamnesisId { get; set; }
public virtual Student Student { get; set; }
. . .
}
其中,学生是主要实体,Anamnesis是共享PK的实体. 现在我希望创建的关系有一个Delete Rule = CASCADE.实际上,正在创建的关系具有Delete Rule = NO ACTION,如下图所示: 如果我在“表格属性”窗口中手动删除此关系并使用“删除规则”=“CASCADE”添加其他关系,则代码将按照我的预期允许我删除学生并且它具有相同ID的共享Anamnesis. 所以,这是我的问题: 有没有办法在我的类中使用Data Annotation(不是Fluent API),以便获得与CASCADE删除规则的关系?我更喜欢使用数据注释,但如果不可能,我会对一些使这项工作的Fluent API代码感到满意. 注意 我已经尝试了这个post中显示的Fluent API代码.在我有双向属性的情况下它不起作用. 解决方法以下流畅的API代码完美地打开了数据库上的级联删除:public class Student
{
public virtual int StudentId { get; set; }
public virtual Anamnesis Anamnesis { get; set; }
}
public class Anamnesis
{
public int AnamnesisId { get; set; }
public virtual Student Student { get; set; }
}
public class Context : DbContext
{
public DbSet<Student> Students { get; set; }
public DbSet<Anamnesis> Anamnesises { get; set; }
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Entity<Student>()
.HasRequired(s => s.Anamnesis)
.WithRequiredPrincipal(a => a.Student)
.WillCascadeOnDelete();
}
} (编辑:安卓应用网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
推荐文章
站长推荐
- 返回每组的前N行(Vertica / vsql)
- sql-server – 在SQL Server 2008 R2 Express中发
- SQL Server 存储过程入门实例
- sql-server – 如何将Nvarchar列转换为INT
- sql-server – sql只从最近的多条记录中选择
- 在SQL编码中可以在TRIGGER中使用DEFERRABLE吗?
- sql – 为什么外部连接比单独的查询慢
- sql – 使用XQUERY / Modify用varchar字段中的值
- mssql server 数据库附加不上解决办法分享
- sql-server – MS SQL Server 2012将datetime导出
热点阅读
