LINQ TO SQL 多表更新

xiangkun404_sh 2012-02-27 02:16:34
数据库现在有2个表,一个父表,一个子表,一对多的关系。我想要在新增父表数据的同时新增子表,但是我的父表的主键是自增长的,大家有什么好的办法么?
...全文
464 13 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
linuxca 2014-03-06
  • 打赏
  • 举报
回复
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 zy704056287 的回复:]

这个是以前做的一个简单的 多表删除 ,参考 一下,和更新应该 差不多
C# code
protected void GridView1_RowDeleting1(object sender, GridViewDeleteEventArgs e)
{
try
{
using (var db = n……
[/Quote]

加这个
protected void GridView1_RowCommand1(object sender, GridViewCommandEventArgs e)
{

if (e.CommandName == "Delete")
{
using (var dc = new myDataClassesDataContext())
{
//先删除从表数据、再删除主表数据
dc.ExecuteCommand("delete from MessageTable where MessageID=" + e.CommandArgument.ToString());

this.GridView1.DataBind();
}
}
}
  • 打赏
  • 举报
回复
这个是以前做的一个简单的 多表删除 ,参考 一下,和更新应该 差不多
 protected void GridView1_RowDeleting1(object sender, GridViewDeleteEventArgs e)
{
try
{
using (var db = new myDataClassesDataContext())
{
var name = GridView1.Rows[e.RowIndex].Cells[0].Text;
var del = from o in db.MessageTable
where o.MessageID == int.Parse(name)
select o;
foreach (var d in del)
{
db.MessageTable.DeleteOnSubmit(d);
db.SubmitChanges();
this.GridView1.DataBind();
}
getdata();
}
}
catch (Exception ex)
{
System.Windows.Forms.MessageBox.Show(ex.ToString());

}
}
haa17 2012-03-02
  • 打赏
  • 举报
回复
为保证数据的完整性,使用事务。

http://www.cnblogs.com/happyhippy/archive/2010/01/27/1657552.html
全局变量 2012-03-02
  • 打赏
  • 举报
回复
数据库触发器可以解决。

# 创建insert类型触发器

--创建insert插入类型触发器
if (object_id('tgr_classes_insert', 'tr') is not null)
drop trigger tgr_classes_insert
go
create trigger tgr_classes_insert
on classes
for insert --插入触发
as
--定义变量
declare @id int, @name varchar(20), @temp int;
--在inserted表中查询已经插入记录信息
select @id = id, @name = name from inserted;
set @name = @name + convert(varchar, @id);
set @temp = @id / 2;
insert into student values(@name, 18 + @id, @temp, @id);
print '添加学生成功!';
go
--插入数据
insert into classes values('5班', getDate());
--查询数据
select * from classes;
select * from student order by id;

insert触发器,会在inserted表中添加一条刚插入的记录。
夜色镇歌 2012-03-02
  • 打赏
  • 举报
回复
claymore1114 2012-02-27
  • 打赏
  • 举报
回复
父类、子类 改写的都写好,最后提交,就一个事务了。
var father=new Father{Name="csdn"};
//添加 子类sub
father.Sub.Add(new sub{Name="S"});

db.Father.InsertOnSubmit(father);
db.SubmitChanges();
xiangkun404_sh 2012-02-27
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 claymore1114 的回复:]
建好关系,用关系 来添加、更新, 并发解决
[/Quote]

数据库关系已经建好了,用关系来做,愿闻详情!
claymore1114 2012-02-27
  • 打赏
  • 举报
回复
建好关系,用关系 来添加、更新, 并发解决
xiangkun404_sh 2012-02-27
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 q107770540 的回复:]
新增完父表后, submitchanges()后即可得到新增记录的主键ID

var father=new Father{Name="csdn"};
db.Father.InsertOnSubmit(father);
db.SubmitChanges();
int newId=father.ID;
然后写入子表
[/Quote]
并发问题呢?可以解决么?
xiangkun404_sh 2012-02-27
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 kong19 的回复:]
父表的主键作子表的外键
[/Quote]

数据库已经做了此关系了!
kong19 2012-02-27
  • 打赏
  • 举报
回复
父表的主键作子表的外键
q107770540 2012-02-27
  • 打赏
  • 举报
回复
新增完父表后, submitchanges()后即可得到新增记录的主键ID

var father=new Father{Name="csdn"};
db.Father.InsertOnSubmit(father);
db.SubmitChanges();
int newId=father.ID;
然后写入子表
.NET Framework 4.0 常用类库参考手册 [微软官方 MSDN] MSDN Library - .NET Framework 4.0 - 命名空间 (节选版) 制作成了chm格式,方便离线状态下学习! ======================================= 原文地址:http://msdn.microsoft.com/zh-cn/library/ms229335.aspx ======================================= .NET Framework 类库 - 命名空间 (节选版) Microsoft.Win32 提供两种类型的类:处理由操作系统引发的事件的类和对系统注册表进行操作的类。 System 包含用于定义常用值和引用数据类型、事件和事件处理程序、接口、特性和处理异常的基础类和基类。其他类提供支持下列操作的服务:数据类型转换,方法参数操作,数学计算,远程和本地程序调用,应用程序环境管理以及对托管和非托管应用程序的监管。 System.Collections 包含定义各种对象集合(如列表、队列、位数组、哈希表和字典)的接口和类。 System.Data 包含组成大部分 ADO.NET 结构的类。ADO.NET 结构使您可以生成可用于有效管理来自多个数据源的数据的组件。 System.Data.Common 包含由 .NET Framework 数据提供程序共享的类。.NET Framework 数据提供程序描述用于在托管空间中访问数据源(如数据库)的类的集合。 System.Data.Linq 包含支持在 LINQ to SQL 应用程序中与关系数据库进行交互的类。 System.Data.Linq.Mapping 包含用于生成表示关系数据库的结构和内容的 LINQ to SQL 对象模型的类。 System.Data.Mapping 提供用于存储数据映射信息的类型。 System.Data.Metadata.Edm 包含一组类型,这些类型表示模型中由实体框架使用的概念,以及一组帮助应用程序使用元数据的类。 System.Data.Objects 包含可访问对象服务的核心功能的类。 System.Data.Objects.DataClasses 包含以下这些类:Entity Data Model (EDM) 中定义的类型的基类、由导航属性返回的类型的基类,以及用于定义将公共语言运行时 (CLR) 对象映射到概念模型中类型的特性的类。 System.Data.Sql 包含支持特定于 SQL Server 的功能的类。此类的 API 扩展已添加到 SQL Server 的 .NET Framework 数据提供程序 ( System.Data.SqlClient) 中。 System.Data.SqlClient 包含封装 SQL Server .NET Framework 数据提供程序的类。SQL Server .NET Framework 数据提供程序描述了用于在托管空间中访问 SQL Server 数据库的类集合。 System.IO 包含允许对数据流和文件进行同步和异步读写的类型。 System.Linq 包含支持使用语言集成查询 (LINQ) 的查询的类和接口。 System.Web 提供启用浏览器/服务器通信的类和接口。 ……

8,493

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 LINQ
社区管理员
  • LINQ
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧