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

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

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

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

于 2012-10-21T22:52:18.487 回答