1

データベースに新しい本を追加したいのですが、うまくいきません。

class Program
    {
        static void Main(string[] args)
        {
            Knigi_DataEntities entities = new Knigi_DataEntities();
                Books newBook = new Books();
                newBook.Name = "C# 4 How-to";
                newBook.Published = 2010;
                newBook.Book_ID = 4;
                entities.AddToBooks(newBook);
                entities.SaveChanges();

            Knigi_DataEntities ent = new Knigi_DataEntities(); 
                  foreach (var book in ent.Books)
                {
                    Console.WriteLine("{0}, {1} {2}  ",
                    book.Book_ID, book.Name, book.Published);
                }
              }
            }

しかし、閉じる//entities.SaveChanges();と、コンソールには既にデータベースにあるオブジェクトが表示されます。したがってentities.SaveChanges();
、新しいオブジェクトを追加する方法を教えてください。

4

3 に答える 3

2

あなたはこれを試すことができます

 entities.Books.AddObject(newBook);
 entities.SaveChanges();
于 2012-10-21T22:03:51.370 に答える
0

Id は主キーではないので、自動生成したいので、入力する必要はありませんか?

于 2012-10-21T22:28:19.573 に答える
0

ここでの問題の 1 つは、データベースで AutoIncrement に設定されていない int 型の主キーがあることです。新規作成時に発生する問題はBooks、int のデフォルト値が で0あり、この ID がデータベースに既に存在することです。

解決策は、データベースで AutoIncrement に設定するか、最大の ID を確認して 1 を追加し、それを Books オブジェクトに割り当てて挿入することです。

この場合、AutoIncrement を使用します。これが最も簡単で、並行性を考慮する必要がないからです。

于 2012-10-21T22:52:18.487 に答える