Entity Framework主从表的增删改
作者:springsnow 发布时间:2023-10-05 18:56:27
标签:Entity,Framework,主从表,增,删,改
一、添加数据
1、在主表中添加从表数据
在景点的住宿集合(Lodgings)中增加一个度假区(Resort)
var dest = (from d in context.Destinations where d.Name == "Bali" select d).Single();
var resort = new CodeFirst.Model.Resort
{
Name = "Pete's Luxury Resort",
};
dest.Lodgings.Add(resort);
context.SaveChanges();
2、添加主表的同时添加从表数据
添加一个带两个住宿的景点
var destination = new CodeFirst.Model.Destination
{
Name = "AnHui HuangShan",
Lodgings = new List
{
new CodeFirst.Model.Lodging {Name="HuangShan Hotel"},
new CodeFirst.Model.Lodging {Name="YingKeSong Hotel"}
}
};
context.Destinations.Add(destination);
context.SaveChanges();
3、添加从表的同时添加主表数据
添加一个带有景点信息度假村到住宿信息中。
var resort = new CodeFirst.Model.Resort
{
Name = "Top Notch Resort and Spa",
Destination = new CodeFirst.Model.Destination
{
Name = "Stowe, Vermont",
Country = "USA"
}
};
using (var context = new CodeFirst.DataAccess.BreakAwayContext())
{
context.Lodgings.Add(resort);
context.SaveChanges();
}
二、修改关联
1、修改从表的外键
var hotel = (from l in context.Lodgings where l.Name == "YingKeSong Hotel" select l).Single();
var reef = (from d in context.Destinations where d.Name == "Bali" select d).Single();
hotel.Destination = reef;
context.SaveChanges();
2、从表与主表脱离关系
1、ForeignKeys方式:
var davesDump = (from l in context.Lodgings where l.Name == "HuangShan Hotel" select l).Single();
davesDump.DestinationID = null;//(ForeignKeys方式)
context.SaveChanges();
2、Reference方式:
var davesDump = (from l in context.Lodgings where l.Name == "HuangShan Hotel" select l).Single();
context.Entry(davesDump).Reference(l => l.Destination).Load(); //找主表数据
davesDump.Destination = null; //清空,(Reference方式)
context.SaveChanges();
三、删除关联数据
1、删除主表的同时删除相关联的从表数据(级联删除)
如果数据库里设置是级联删除,则不显示加载从表数据。
var canyon = (from d in context.Destinations where d.Name == "AnHui HuangShan" select d).Single();
context.Entry(canyon).Collection(d => d.Lodgings).Load(); //从表显示加载后,再删除主表数据
context.Destinations.Remove(canyon);
context.SaveChanges();
2、普通删除
删除主表数据,同时标注从表数据为删除状态(数据库关闭了级联删除的情况,可以手动去数据库的外键关系修改,也可以Fluent API配置关闭级联删除)
var canyon = (from d in context.Destinations where d.Name == "Grand Canyon" select d).Single();
foreach (var lodging in canyon.Lodgings.ToList())
{
context.Lodgings.Remove(lodging); //先标记相关的从表数据为删除状态
}
context.Destinations.Remove(canyon); //再标记主表数据为删除装填
context.SaveChanges(); //执行上面的所有标记
来源:https://www.cnblogs.com/springsnow/p/13230080.html
0
投稿
猜你喜欢
- 最近有时间,写一些很简单、很基础的东西,主要在操作层面。主要考虑如下: 1、经常搭建开发环境,所以有必要记录一下,自己也可以备查; 2、给新
- 序言:使用MyBatis3提供的注解可以逐步取代XML,例如使用@Select注解直接编写SQL完成数据查询,使用@SelectProvid
- 本文实例为大家分享了C# GDI+实现时钟表盘的具体代码,供大家参考,具体内容如下一、设计如下图界面按键“打开时钟&am
- 多选和单选的不同之处单选的时候,选中一个就可以直接把结果返回,因此本身底部弹窗无需状态管理。但到多选的时候,需要知道当前选中的选项,有选项被
- 今天老师想让我帮忙把她们200多张寸照换成白底的,这些寸照里面多为蓝色底,红色底。用ps?不!用java!!对,我第一反应就是用java,到
- 前言开发中很多需要javac 的程序依赖 JAVA_HOME环境变量.如果是手工下载源码安装的JDK,很容易知道JAVA_HOME的目录.
- final File imageFile = new File(getCacheDir().getPath() + "/img/&
- Jackson解析嵌套类(MismatchedInputException)具体报错如下问题描述:Jackson解析嵌套类问题 调
- Spring Web MVC是一种基于Java的实现了Web MVC设计模式的请求驱动类型的轻量级Web框架,即使用了MVC架构模式的思想,
- Flayway是一款数据库版本控制管理工具,,支持数据库版本自动升级,Migrations可以写成sql脚本,也可以写在java代码里;不仅
- 一般表单数据分为两类<form method="post" action="${pageContext.
- 经过一番搜索发现,java操纵excel文件常用的有jxl和poi两种方式,孰好孰坏看自己需求而定。其中最主要的区别在于jxl不支持.xls
- 本文实例讲述了Java截取字符串的方法。分享给大家供大家参考。具体实现方法如下:public static void main(String
- 通过本文你可以用非常简短的代码替代业务逻辑中的判null校验,并且很容易的在出现空指针的时候进行打日志或其他操作。注:如果对Java8新特性
- 对Jpa Entity关系映射中mappedBy的理解mappedBy 单向关系不需要设置该属性,双向关系必须设置,避免双方都建立外键字段数
- 两个简单的例子,代码实现如下:1、随机拆分一个整数public static List<Integer> randomList(
- DataSource在数据库应用中,客户端与数据库服务端建立的连接对象(Connection)是宝贵的资源,每次请求数据库都创建连接,使用完
- 本文实例讲述了java和c#使用hessian通信的方法,是非常实用的技巧。分享给大家供大家参考。具体分析如下:首先,hessian主页为:
- 通常我们在看一些源码时,发现全是T、?,晕乎乎的:sob:。于是,把泛型掌握好十分重要!什么是泛型Java 泛型(generics)是 JD
- 目录1、如果一个方法或变量是"private"访问级别,那么它的访问范围是:2、代码将打印?3、下面关于hibernat