C# LINQ多重插入
我有下面列出的功能C# LINQ多重插入,c#,linq,C#,Linq,我有下面列出的功能 public bool Card_Gen(int id) { Card_Details New_Card = new Card_Details(); int k =0; try { for (k = 1; k <= id; k++) { New_Card.Card_Num = CreateMD5Hash(C
public bool Card_Gen(int id) {
Card_Details New_Card = new Card_Details();
int k =0;
try
{
for (k = 1; k <= id; k++)
{
New_Card.Card_Num = CreateMD5Hash(Card_Number()).Substring(0, 12);
New_Card.Card_Serial = Card_Serial();
db.Card_Details.AddObject(New_Card);
db.SaveChanges();
}
}
catch (Exception ex) {
return false;
}
return true;
}
public bool Card\u Gen(内部id){
卡片详情新卡片=新卡片详情();
int k=0;
尝试
{
对于(k=1;k您可以使用db.Configuration.AutoDetectChangesEnabled
来启用数据库中的刷新数据
for (k = 1; k <= id; k++)
{
New_Card.Card_Num = CreateMD5Hash(Card_Number()).Substring(0, 12);
New_Card.Card_Serial = Card_Serial();
db.Card_Details.AddObject(New_Card);
db.SaveChanges();
//db.SubmitChanges();
db.Configuration.AutoDetectChangesEnabled = true;
}
你不能这样做。你在循环外定义你的新卡
,因此你只在第一次循环迭代中插入一次,然后在下一次循环迭代中更新它
您的代码应该是:
public bool Card_Gen(int id) {
int k =0;
try
{
for (k = 1; k <= id; k++)
{
Card_Details New_Card = new Card_Details();
New_Card.Card_Num = CreateMD5Hash(Card_Number()).Substring(0, 12);
New_Card.Card_Serial = Card_Serial();
db.Card_Details.AddObject(New_Card);
db.SaveChanges();
}
}
catch (Exception ex) {
return false;
}
return true;
}
public bool Card\u Gen(内部id){
int k=0;
尝试
{
对于(k=1;k您应该每次创建对象的新实例,否则它将更新旧行
public bool Card_Gen(int id) {
Card_Details New_Card ;
int k =0;
try
{
for (k = 1; k <= id; k++)
{
//creating new object in loop
New_Card = new Card_Details();
New_Card.Card_Num = CreateMD5Hash(Card_Number()).Substring(0, 12);
New_Card.Card_Serial = Card_Serial();
//edit in these two lines if you are using LINQ2SQL otherwise for other providers your code might be correct
db.Card_Details.InsertOnSubmit(New_Card);
db.SubmitChanges();
}
}
catch (Exception ex) {
return false;
}
return true;
}
public bool Card\u Gen(内部id){
卡片详细信息-新卡片;
int k=0;
尝试
{
for(k=1;k您是否尝试过将对象的实例化移动到for循环中?现在,您似乎在反复编辑同一个对象
如果有必要,稍后将使用示例进行编辑,我现在正在使用手机。不应该Card\u Details New\u Card=New Card\u Details();
在for
循环中吗?谢谢您的回复。但是'db.SubmitChanges()'不seam to be available方法。我正在使用framework 4.0您可以粘贴'db'变量的声明吗?我需要知道您是在使用dbcontext、entity还是其他人这里是db声明'School\u Entities\uudb=new School\u Entities_uuu();'检查您是否有一个'.Flush'方法,您可以在'db.SaveChanges()'之后使用它(始终进入for循环)尝试使用db.Configuration.AutoDetectChangesEnabled=true
接受数据库中的刷新数据:for(k=1;k两种方法插入提交(新卡);提交更改();接缝不可用methods@wale您正在使用什么ORM?它们用于LINQ2SQL。我正在使用Linq to SQLSo,所以表上有InsertOnSubmit方法,DataContexts上有SubmitChanges方法我没有这两种方法中的任何一种
public bool Card_Gen(int id) {
Card_Details New_Card ;
int k =0;
try
{
for (k = 1; k <= id; k++)
{
//creating new object in loop
New_Card = new Card_Details();
New_Card.Card_Num = CreateMD5Hash(Card_Number()).Substring(0, 12);
New_Card.Card_Serial = Card_Serial();
//edit in these two lines if you are using LINQ2SQL otherwise for other providers your code might be correct
db.Card_Details.InsertOnSubmit(New_Card);
db.SubmitChanges();
}
}
catch (Exception ex) {
return false;
}
return true;
}