首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

在LINQ to SQL中,通过外键添加时是否需要InsertOnSubmit()?

在LINQ to SQL中,通过外键添加时是否需要InsertOnSubmit()?

在LINQ to SQL中,当您需要通过外键关系添加新的数据时,确实需要使用InsertOnSubmit()方法。这是因为InsertOnSubmit()方法会将新的数据对象添加到DataContext中,并将其标记为要插入到数据库中。

在LINQ to SQL中,通过外键关系添加新的数据时,需要遵循以下步骤:

  1. 创建新的数据对象,并设置其属性值。
  2. 将新的数据对象添加到相应的DataContext中。
  3. 调用DataContext的SubmitChanges()方法,将新的数据对象插入到数据库中。

例如,假设您有一个名为“Order”的数据类,其中包含一个名为“Customer”的外键属性。要通过外键关系添加新的Order对象,您可以执行以下操作:

代码语言:csharp
复制
// 创建新的Order对象
Order newOrder = new Order();
newOrder.OrderDate = DateTime.Now;
newOrder.CustomerID = 123;

// 将新的Order对象添加到DataContext中
OrdersDataContext dc = new OrdersDataContext();
dc.Orders.InsertOnSubmit(newOrder);

// 将新的Order对象插入到数据库中
dc.SubmitChanges();

在这个例子中,我们首先创建了一个新的Order对象,并设置了其属性值。然后,我们将新的Order对象添加到OrdersDataContext中,并使用InsertOnSubmit()方法将其标记为要插入到数据库中。最后,我们调用了DataContext的SubmitChanges()方法,将新的Order对象插入到数据库中。

需要注意的是,如果您使用的是Visual Studio 2012或更高版本,则可以使用Entity Framework来处理LINQ to SQL中的外键关系。Entity Framework提供了更强大的功能和更好的性能,因此建议您使用Entity Framework来处理外键关系。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

非常帅气的Linq to sql

Linq是.NET 3里新增的东西,我软件工程课程设计里初步应用到一点,而且主要用在Lambda表达式上,今天算是好奇心驱动下尝试了一下在数据库方面的应用。...(方法见:http://msdn.microsoft.com/zh-cn/library/ms247254.aspx)然后需要做的就是新建Linq to Sql项,然后把建好的表拖进来,一切都是可视化,...我无耻地发现,类似关联,这种东西,他直接给你分析出来了,而且可以任意修改,一切都是自动化的,华丽丽的微软。之后的代码操作异常简单,我只测试了查询和添加(具体代码见本文尾巴)。...(因为我的Sql Server是Express版的没有分析工具),我很惊喜地发现Linq最为神奇的地方在于写完select的那一句的时候并没有连接数据库,Linq会在需要访问数据的时候从已知条件生成SQL...另外也是这个延迟执行的原因,SQL语句会在查询的时候提交,t.Sample2.InsertOnSubmit(s2); 的后面要加上  t.SubmitChanges(); 因为之后没有查询,没有访问数据库

79610

一步一步学Linq to sql(七):并发与事务

如果你仅仅是希望更新不考虑并发的话可以关闭相关列的更新验证,这样在这些列上发生并发就不会出现异常: [global::System.Data.Linq.Mapping.ColumnAttribute(...catch{},我们从ChangeConflicts获取了并发的对象,然后经过类型转化后输出了产品ID,然后选择的解决方案是RefreshMode.OverwriteCurrentValues。...之前SQL语句库存-2生效了,而我们程序的更新(库存-1)被放弃了。页面上也显示了所有分类为1的产品ID(因为我们之前的SQL语句是对所有分类为1的产品都进行修改的)。...to sql提交更新的时候默认会创建事务,一部分修改发生错误的话其它修改也不会生效: ctx.Products.InsertOnSubmit(new Products { ProductID...或者,我们还可以通过TransactionScope实现事务: //使用之前必须添加对 System.Transactions.dll 的引用。

53030

LINQ to SQL(3):增删改查

上一节,我已经写过了利用OR设计器生成对象模型的方式,其实生成这样对数据库进行映射的模型的方式不只这一种,不过VS为我们提供的这种设计器真的是很强大,实际应用也是经常用到的 这一节写利用LINQ...to SQL对数据库进行的简单增删改查的操作的实现方式,这里注意是“简单”,复杂的查询呢,我将会在下一篇或者下下一篇写到,那里会有很多的内容,比如处理并发啦,自定义LINQ表达式查询啦,等等的这些,而下一篇我计划写一些关于扩展...这里看到,我OR视图中添加了两个有主外关系的表,一个视图,和一个存储过程,下面示范怎样来执行增删改查 查询 首先我们假设要查询Customers表中所有City为London的数据项 NorthWindDataContext...绝对的雷同,不是巧合,当然了,访问视图的规则,还是必须要和数据库我们创建视图的规则一样的,能怎么操作,不能怎么操作,不是由LINQ to SQL决定的,OR设计器只是帮助我们生成了一个实体类对于视图结果集的一个映射而已...怎么样,简单到不可思议吧,必要怀疑,不要以为LINQ to SQL是多么高深的话题,完全没有,但是,中国话呀,就是这样,一说“但是”就要麻烦啦,没错,我们享受它的方便快捷的同时,也会经常遇到这样那样的问题

67990

EFRepository模式应用场景

DDD领域构架系统,为了将领域模型从领域逻辑层中和数据映射层之间解耦出来,我们引用到了Repository模式,属于属于泛型编程中一个比较常用的模式,尤其应用到MVC构架更为常见,我们来简单的介绍几个概念...2、《企业构架模式》,译者对其翻译为:资源库,说明如下: 通过用来访问领域对象的一个类似集合的接口,领域与数据映射层之间进行协调 下面通过一个案例才详细说明该解耦过程 一、新建应用程序,添加Linq...To Sql,新建两个领域模型,用会员模型(Dinner)和会议模型(RSVP),很明显这里应该是一对多的关系,也即是说一张会议会有很多人来参与。...Where(exp); } public void Add(T entity) { context.GetTable().InsertOnSubmit...,需要几个扩展类,定义领域模型责任接口,实现领域对象业务领域的扩展,实现类就要同时继承基类和约束接口了。

1.1K30

JQuery EasyUi之界面设计——母版页以及Ajax的通用处理(三)

setAjaxUrl函数表单赋值加载前执行,可以实现用于更改上面的3个变量的值,或者作其他作用,建议命名为beforeFormLoad。...通过autoLoad参数,可以判断是否是加载赋值。注意FirstOrDefault函数,是获取第一条数据,然后通过ToJson方法(自己定义的扩展方法)转换为JSON数据。...通过id参数,可以判断是否为编辑。 以上使用的是LINQ to SQL,个人认为使用LINQ to SQl开发小项目还是挺快的。关于LINQ to SQL的具体使用,就不说了。...顺便送大家一段服务器分页通用代码(仅支持LINQ2SQL),如果觉得性能不行,请自己用存储过程实现,这里不考虑性能: 1: /// 2: /// 当前页 3: /// 34: 35: 在编辑

1.8K30

C#规范整理·集合和Linq

由于LINQ查询返回的集合匿名类型的属性都是只读的,如果需要为匿名类型属性赋值,或者增加属性,只能通过初始化设定项来进行。初始化设定项还能为属性使用表达式。...当我们觉得集合插入和删除数据很慢,就可以考虑使用链表。...LINQ to SQL,延迟求值能够带来显著的性能提升。...使用IQueryable<T>查询的时候,如果使用自定义的方法,则会抛出异常。 13.使用LINQ取代集合的比较器和迭代器# LINQ提供了类似于SQL的语法来实现遍历、筛选与投影集合的功能。...现在从LINQ查询生成匿名类型来看,相当于可以无限为集合增加迭代需求。 有了LINQ之后,我们是否就不再需要比较器和迭代器了呢?答案是否定的。

15330

优化OEA的聚合SQL

相关内容,参见:《性能优化总结(二):聚合SQL》、《性能优化总结(三):聚合SQLGIX4的应用》。...首先,是为表生成什么样的列名,生成SQL按照这种列名的约定进行生成,加载对象则在大表找对应列的数据。...其次,它们还隐含耦合一些说明性的数据,这些数据指明了需要加载哪些子属性或者,什么样的加载关系,对应一个什么样的聚合SQL,也就对应加载出来的对象。    ...而列名的生成原来的模式已经使用了“表名+列名”的格式进行了约定,所以现在我们只需要把“描述如何加载的描述性数据”进行管理就可以了。...例如:A对象作为Root的子对象,它还有子对象B、C,B有子对象D、E,D有引用对象F、F有子对象G,那么,只处理链式的加载意味着,最多可以加载某个Root对象的A集合的同时,带上A.B、B.C、

1.6K70

C# 数据操作系列 - 8. EF Core的增删改查

不过如果有导航属性的话,新增的时候,EF Core会自动检索导航属性的另一端是否需要新增到数据库,如果需要新增的话,EF Core会自动标记为新增的。...而删除,如果在配置导航属性,没有设置级联删除,删除当前元素,如果另一端的是可空类型的,并不会删除导航属性另一端的元素只会设置键指向为NULL,如果另一端是不可空的,那么就会同时删除。...: 行为名称 对内存的依赖项/子项的影响 对数据库的依赖项/子项的影响 Cascade 删除实体 删除实体 ClientSetNull(默认) 属性设置为 null None SetNull 属性设置为...null 属性设置为 null Restrict None None 而对于不可为NULL的来说,枚举DeleteBehavior的值起以下作用: 行为名称 对内存的依赖项/子项的影响 对数据库的依赖项...EF Core调用 ToList的时候,会将已调用的方法和Linq转换成SQL语句,并正式向数据库发起查询。如果出现了Linq调用三方方法或者自己写的工具方法的话,可能会提示不受支持。

3K20

LINQ to SQL(1):基础入门

LINQ to SQLSQL SERVER数据库上设置一个强类型化界面的方式,LINQ to SQL提供的方式是目前我所见到查询SQL SERVER最简单也是最有效的方式,他可以使用自定义的类型与数据表甚至存储过程进行对应...ORM设计器来生成我们需要的模型,毫无疑问,那将会是一件非常幸福的事情,简单的介绍就写到这里,如果您还不了解LINQ是个什么东西,就必须先去看看LINQ的基础啦,当然,我的这期博文里,不会用到太多复杂的...System.Data.Linq.Mapping; 然后,我们只需要添加TableAttribute属性就可以实现映射关系啦,类的内部,定义属性,使用ColumnAttribute标记属性类中指定与数据的类的映射...下面写一个有关系的两个表的链接查询 Customers.cs添加如下内容 [Table(Name = "Orders")] public class Order {...to SQL模型的话,是没有像GetTable这种东西出现的,二十查询的时候,可以直接使用强类型话的类对象,那么他是如何实现的呢,继续往下看 Customer.cs命名空间下添加如下代码 public

1.3K60

EntityFramework 键值映射

如果在 EF OnModelCreating 配置了实体外映射,也就是 SQL Server 的 ForeignKey,那么我们添加实体的时候,主实体的主键值会自动映射到子实体的键值,并且这个操作一个...SaveChanges ,但如果没有 OnModelCreating 中进行映射配置,我们添加实体的时候,就不会自动映射键值了,什么意思呢?...OnModelCreating 中进行映射配置,所以生成到 SQL Server 的 db_school 数据库,会是这样: ?...可以看到 Student 的 ClassId 字段并不是,下面我们添加 Student 和 Class 实体: static void Main(string[] args){ using...实体框架界面层的查询,我们也不在使用部分SQL的条件做法了,采用更加安全的基于DTO的LINQ表达式进行封装,最后传递给后台的也就是一个LINQ对象(非传统方式的实体LINQ,那样分布式处理中会出错

4.1K50

.NET面试题系列 - LINQ:性能

当我们调用LINQ的某些方法,我们缓存了整个序列,而这可能是不必要的。我们根本不需要将整个序列留在内存,只需要获得最后一个成员就可以了。...(当然还有很多其他工具,或者最基本的就是用SQL Profiler不过比较麻烦) LINQ to SQL的性能问题 提升从数据库拿数据的速度,可以参考以下几种方法: 在数据库的表定义合适的索引和...LINQ:替代选择 没有找到性能瓶颈之前,不要过早优化。 是否存在需要长时间运行的LINQ语句? 是否在数据库上取得数据,并运行LINQ语句?...(这意味着存在一个LINQ语句到SQL的表达式转换) 数据规模是否巨大? 是否需要重复极其多次运行相同的LINQ语句?...LINQ性能问题:总结 使用LINQPad等工具观察生成的SQL。当你优化之后,再次LINQPad上运行看看是否造成了可观的性能提升。 是否需要在数据库上筛选数据,并运行LINQ语句?

2.5K40

C#3.0新增功能09 LINQ 基础04 基本 LINQ 查询操作

本篇介绍 LINQ 查询表达式和一些查询执行的典型操作。 获取数据源 LINQ 查询,第一步是指定数据源。 和大多数编程语言相同,使用 C# 也必须先声明变量,然后才能使用它。...当执行查询,范围变量将充当对 customers 每个连续的元素的引用。 由于编译器可以推断 cust的类型,因此无需显式指定它。 可通过 let 子句引入其他范围变量。...列表的每个元素都是具有 Key成员的对象,列表的元素根据该被分组。 循环访问生成组序列的查询,必须使用嵌套 foreach 循环。 外层循环循环访问每个组,内层循环循环访问每个组的成员。...联接 联接操作不同序列间创建关联,这些序列在数据源未被显式模块化。 例如,可通过执行联接来查找所有位置相同的客户和分销商。...LINQ ,不必像在 SQL 那样频繁使用 join,因为 LINQ 在对象模型中表示为包含项集合的属性。

3.4K20

【深入浅出C#】章节 9: C#高级主题:LINQ查询和表达式

例如,关系数据库需要使用SQL进行查询,而在.NET需要使用各种不同的API来操作集合、XML等。这种情况下,代码变得分散,难以维护,而且需要学习多种查询语言。...集成性: LINQ与.NET语言(如C#)紧密集成,不需要额外学习新的查询语言。 支持扩展: 可以通过自定义扩展方法来为LINQ添加自定义查询操作。...延迟执行: LINQ查询采用了延迟执行的概念,这意味着查询表达式并不会立即执行查询操作,而是实际需要查询结果才会执行。这有助于提高性能,因为只有需要才会访问数据源。...它支持延迟加载,这意味着查询不会立即执行,而是需要结果才会被执行,从而优化查询性能。 Array:C#的数组可以直接用于LINQ查询。...你可以创建自己的 LINQ 扩展方法来 LINQ 查询添加自定义的功能或操作。

1K61

Entity Framework Core 2.0 新特性

通过这个特性 我们可以很方便的linq调用这些函数,并通过linq翻译成SQL 代码如下: public class BloggingContext : DbContext { [DbFunction...(p.Id) > 5 select p; 值得注意的是: 在生成SQL,该方法的名称将用作函数的名称(本例为用户定义的函数),但在方法注册期间可以覆盖名称和模式 目前只支持标量功能 必须自行在数据库创建映射函数...显式编译的查询API已经以前版本的EF和LINQ to SQL可用,以允许应用程序缓存查询的翻译,以便它们只能被计算一次并执行多次。...EF.Functions属性(注意,这里应该是可以扩展的,添加更多的数据库方法),EF Core可以使用它们来定义映射到数据库函数或操作符的方法,以便可以LINQ查询调用它们。...,当对内存的数据进行查询,或者客户端需要发生相关的内存查询,可以方便很多.

3.8K90
领券