LINQ TO SQL 多表更新

xiangkun404_sh 2012-02-27 02:16:34
数据库现在有2个表,一个父表,一个子表,一对多的关系。我想要在新增父表数据的同时新增子表,但是我的父表的主键是自增长的,大家有什么好的办法么?
...全文
436 13 打赏 收藏 转发到动态 举报
写回复
用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;
然后写入子表

8,497

社区成员

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

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