博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
EF Code First 主键对应多个外键
阅读量:6970 次
发布时间:2019-06-27

本文共 2608 字,大约阅读时间需要 8 分钟。

这是一位朋友提出的疑问,EF 映射主键可以对应多个外键吗?如果外键设置级联删除会发生什么情况?下面做一个测试,示例实体代码:

public class Blog{    public Blog()    {        Post1s = new List
(); Post2s = new List
(); } public int Id { get; set; } public string Title { get; set; } public string Url { get; set; } public string Remark { get; set; } public virtual List
Post1s { get; set; } public virtual List
Post2s { get; set; }}public class Post1{ public int Id { get; set; } public int BlogId { get; set; } public string Title { get; set; } public string Content { get; set; } public virtual Blog Blog { get; set; }}public class Post2{ public int Id { get; set; } public int BlogId { get; set; } public string Title { get; set; } public string Content { get; set; } public virtual Blog Blog { get; set; }}

Blog 作为主表,Post1 和 Post2 作为字表,对应关系是一对多,示例映射代码:

public DbSet
Blogs { get; set; }public DbSet
Post1s { get; set; }public DbSet
Post2s { get; set; }protected override void OnModelCreating(DbModelBuilder modelBuilder){ modelBuilder.Entity
() .HasKey(t => t.Id); modelBuilder.Entity
() .HasMany(t => t.Post1s) .WithRequired() .HasForeignKey(t => t.BlogId) .WillCascadeOnDelete(true); modelBuilder.Entity
() .HasMany(t => t.Post2s) .WithRequired() .HasForeignKey(t => t.BlogId) .WillCascadeOnDelete(true); modelBuilder.Entity
() .HasKey(t => t.Id); modelBuilder.Entity
() .HasKey(t => t.Id); base.OnModelCreating(modelBuilder);}

生成数据结构:

301131458421030.png

测试数据代码:

static void Main(string[] args){    using (var context=new BloggingContext())    {        //var blog = new Blog        //{
// Remark = "1", // Title = "1", // Url = "1" //}; //blog.Post1s.Add(new Post1 //{
// Title = "1", // Blog = blog, // Content = "1" //}); //blog.Post2s.Add(new Post2 //{
// Title = "1", // Blog = blog, // Content = "1" //}); //context.Blogs.Add(blog); var blog = context.Blogs.FirstOrDefault(); context.Blogs.Remove(blog); context.SaveChanges(); Console.ReadKey(); }}

测试结果我就不截图了,上面映射配置中,Blog 和 Post1、Post2 关系是一对多,并且级联删除,当我们添加 Blog 中的数据,Post1、Post2 也会自动生成对应的外键值,当我们删除 Blog 中的数据,外键对应 Post1、Post2 中的数据也会自动删除。

总的来说,EF Code First 主键对应多个外键?答案是:没什么问题。

本文转自田园里的蟋蟀博客园博客,原文链接:http://www.cnblogs.com/xishuai/p/4377549.html,如需转载请自行联系原作者

你可能感兴趣的文章
ubuntu 16.04安装mips交叉编译
查看>>
MyEclipse查看Struts2源码及Javadoc文档
查看>>
C语言基础学习day03
查看>>
js代码规范
查看>>
Algs4-2.4.24链接实现优先队列
查看>>
spring mvc 程序
查看>>
20条Linux命令面试问答
查看>>
Jmeter做并发测试(设置集合点)
查看>>
001/Nginx高可用模式下的负载均衡与动静分离(笔记)
查看>>
云服务jdk 升级为 OpenJDK11
查看>>
wp 取消button按下效果
查看>>
【差分约束】
查看>>
C#,java,C++ 等变量命名规则
查看>>
第六次实验
查看>>
python 编码问题
查看>>
进程与线程
查看>>
案例分析
查看>>
A Simple Problem with Integers(线段树入门题)
查看>>
福大软工 · 第七次作业 - 需求分析报告
查看>>
用ECMAScript4 ( ActionScript3) 实现Unity的热更新 -- 操作符重载和隐式类型转换
查看>>