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;
}