ef批量插入问题

anan3000 2012-08-11 02:46:42
想批量向数据库的MailList插入数据,用如下代码只能插入count=2的时候的数据,前边都插补进去,求解。。。。
为mail赋值
using (DAL.Entities db = new DAL.Entities())
{
for (int count = 0; count < 3; count++)
{
DAL.MailList newmail = email;
newmail.MailReceiverStr = count.ToString();
db.MailLists.AddObject(newmail);
//db.AddToMailLists(newmail);
}

db.SaveChanges();
}
--------------------------------------------------------------------------------------
还有个问题是如果我把插入单独写一个方法
public static int Send(MailList mail)
{
using (Entities db = new Entities())
{
db.AddToTabMailLists(mail);
return db.SaveChanges();
}

}
然后在for中调用,
for (int count = 0; count < 3; count++)
{
email.MailReceiverStr = count.ToString();
DAL.MailDAL.Send(email);
}
则插入得是count=0的数据,不知道为什么哦,求解。。。。。。。。。
...全文
5287 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
anan3000 2012-08-12
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 的回复:]

引用楼主 的回复:
然后在for中调用,
for (int count = 0; count < 3; count++)
{
email.MailReceiverStr = count.ToString();
DAL.MailDAL.Send(email);
}
则插入得是count=0的数据,不知道为什么哦,求解。。。。。。。。。

你插了三遍同一个email对象,emai……
[/Quote]
我是想count.ToString();得自增来改变email.MailReceiverStr的值来改变email的值,但发现不行,如何才能是email更改呢,难道要把email所有的属性都重新赋值一遍??求解
anan3000 2012-08-12
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 的回复:]

因为你把 db.SaveChanges(); 写到循环外边了。

插呀插,每一次都要提交。
[/Quote]
首先感谢对新人的指导,这句确实错了,我把db.SaveChanges();放入for里边编译提示插入状态错误,本来是为了这事send()为什么不好使的,现在感觉就不该这么写。
anan3000 2012-08-12
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 的回复:]

C# code


for (int count = 0; count < 3; count++)
{
DAL.MailList email= new DAL.MailList();
email.MailReceiverStr = count.ToString();
DAL.MailDAL.Send(email);
}

public static int Sen……
[/Quote]
首先感谢指导,但用DAL.MailList newemail=db.MailList.SingleOrDeflult(m=>m.ID==mail.ID);
试验了一下没有插入数据,感觉这句是在数据库查询mail.ID的对象并返回呢,但我是要插入新的数据,原来数据库里没有这个id。
我换成 DAL.MailList newemail=mail;结果只插入了一个MailReceiverStr=0的值,
我把代码整理了下
for (int count = 0; count < 3; count++)
{
DAL.MailList email= new DAL.MailList();
email.MailReceiverStr = count.ToString();
DAL.MailDAL.Send(email);
}

public static int Send(MailList mail)
{
using (Entities db = new Entities())
{
DAL.MailList newemail=new DAL.MailList();
newemail.MailReceiverStr =mail.MailReceiverStr ;
db.AddToTabMailLists(newemail);
return db.SaveChanges();
}
}
结果也只插入1条数据,后来我把send中对newemail的所有属性全赋值了,结果就成功插入3条了,感觉还是基础太差,但如何判断newemail的对象属性是否被更改了呢,必须要把每个属性都重新赋值吗?
  • 打赏
  • 举报
回复
自己认真一点总结吧。这是初学者的问题,不要让这种“粗枝大叶”的编程习惯一直陪伴着你。
  • 打赏
  • 举报
回复
[Quote=引用楼主 的回复:]
然后在for中调用,
for (int count = 0; count < 3; count++)
{
email.MailReceiverStr = count.ToString();
DAL.MailDAL.Send(email);
}
则插入得是count=0的数据,不知道为什么哦,求解。。。。。。。。。[/Quote]

你插了三遍同一个email对象,email变量引用的对象根本没变过。
  • 打赏
  • 举报
回复
因为你把 db.SaveChanges(); 写到循环外边了。

插呀插,每一次都要提交。
q107770540 2012-08-11
  • 打赏
  • 举报
回复


for (int count = 0; count < 3; count++)
{
DAL.MailList email= new DAL.MailList();
email.MailReceiverStr = count.ToString();
DAL.MailDAL.Send(email);
}

public static int Send(MailList mail)
{
using (Entities db = new Entities())
{
DAL.MailList newemail=db.MailList.SingleOrDeflult(m=>m.ID==mail.ID);
newemail.MailReceiverStr =mail.MailReceiverStr ;
db.AddToTabMailLists(newemail);
return db.SaveChanges();
}

}

8,497

社区成员

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

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