0

こんにちは友達私は以下のリストを持っています

List<Authors>listAuthor=new  List<Authors>();

そのリストには10​​0個のレコードがあります。私の質問は、エンティティフレームワークのデータベースファーストテクニックを使用して、Asp.Net MVcで1回のラウンドトリップ(データベースへの1回のヒットのみ)でこれらのリストをデータベースに保存したいということです

オブジェクトを作成しました

  Author objAuthor=new Author();
  objAuthor=listAuthor;

変換エラーが発生しています。何かアイデアはありますか?

これは私の完全なコードです

    public ActionResult SaveAuthorConsol()
    {
        List<Author> listAuthor = new List<Author>(); // declare list

        List<Bib> bib = new List<Bib>(); // geting records from this table
        bib = db.Bibs.ToList();

        var q = db.Authors.ToList(); 

        foreach (var c in q)
        {
            db.Authors.DeleteObject(c); //Note:deleting previous records from Author table
        }

        db.SaveChanges();

        foreach (var bibitems in bib) // return Author type list 
        {
            Authors objAuthor = new Authors();
           listAuthor.AddRange(objAuthor.SaveAouthor(0, bibitems.Contents));
        }
        foreach (Author objauthor in listAuthor) //adding my list records to database
        {
            db.Authors.Attach(objauthor); //   getting error here
        }


        db.SaveChanges();
        return View();
    }

ありがとう

4

3 に答える 3

2

タイプの新しいオブジェクトを作成する必要はありませんAuthor。各アイテムをデータベースコンテキストに追加した後、SaveChangesを1回直接呼び出すことができます。

試す:

foreach(Author objAuthor in listAuthor)
{
     db.Author.AddObject(objAuthor);
}
db.SaveChanges();
于 2012-09-17T06:26:57.643 に答える
1

リストに要素を追加できます:

List<Authors> listAuthor = new List<Authors>();
Author objAuthor = new Author();
listAuthor.Add(objAuthor);

しかし、あなたが EF について言及したので、エンティティを直接追加して変更を永続化できるデータベース コンテキストがあると思います。

Author objAuthor = new Author();
db.Authors.Add(objAuthor);
db.SubmitChanges();
于 2012-09-17T06:25:09.793 に答える
0

問題は変換の方法にあります。コードを見てください。あなたがやろうとしていることは、List<Authors>クラスAuthorのインスタンスにを割り当てることです。それは単純に不可能です。反対のことをしなければなりません。

複数の更新のための編集残念ながら、まだ方法はありません。私があなたに提案できること..複数の行のXMLを準備します。XML挿入を使用し、通常のストアドプロシージャを使用します。これにより、DBへの1回のヒットで、一度に任意の数の行を挿入できます。

于 2012-09-17T06:31:19.317 に答える