如何将新对象添加到数据库?

时间:2012-10-21 22:00:43

标签: c# entity-framework ado.net ado.net-entity-data-model savechanges

我想在我的数据库中添加一本新书,但它不起作用。

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();引起的
请告诉我,如何添加新物品?

3 个答案:

答案 0 :(得分:2)

你可以试试这个

 entities.Books.AddObject(newBook);
 entities.SaveChanges();

答案 1 :(得分:0)

您确定Id不是主键,因此它想要自动生成一个而您不必输入它吗?

答案 2 :(得分:0)

这里的一个问题可能是您的数据库类型为int的主键未在数据库中设置为AutoIncrement。创建新Books时可能出现的问题是int的默认值为0,并且此ID已存在于您的数据库中。

解决方案是在数据库中将其设置为AutoIncrement或检查最高ID,添加1,将其分配给Books对象并插入。

在这种情况下,我会使用AutoIncrement,因为它是最简单的,您不必考虑并发性。