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();
새 개체를 추가하는 방법을 알려주십시오.

+0

오류에 대한 자세한 정보를 제공하십시오 – Maximc

+0

DefiningQuery가 있고 현재 작업을 지원하기 위해 요소에 요소가 없으므로 EntitySet 'Books'를 업데이트 할 수 없습니다. –

+0

이 질문을 참조하십시오. 아마도 도움이 될 것입니다. http://stackoverflow.com/questions/1589166/it-has-a-definingquery-but-no-insertfunction-element-err –

답변

2

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

감사하지만 도움이되지 않았습니다 ( –

+0

). 실제로 ef가 설정되어 있지 않으면 dv를 확인하십시오. –

0

기본 키 및 그가 자동으로 원하는 t 이드 ISN 하나 생성 있는지 확인을하고 당신이 t를 입력 그것을 가지고 돈 시도 할 수 있습니다?

+0

book_id가 엔티티 키 –

0

여기서 한 가지 문제는 데이터베이스에 AutoIncrement로 설정되지 않은 유형의 기본 키가 있다는 것입니다. 새 Books을 만들 때 발생하는 문제는 int의 기본값이 0이고이 ID가 데이터베이스에 이미 존재한다는 것입니다.

해결책은 데이터베이스에서 AutoIncrement로 설정하거나 가장 높은 ID를 확인하고 1을 추가하여 Books 개체에 할당하고 삽입하는 것입니다.

이 경우 가장 쉽고 동시성을 고려할 필요가 없기 때문에 AutoIncrement를 사용할 것입니다.

+0

입니다. '수행 방법 –

+0

MSSQL에 대해 이야기 할 때 테이블 디자이너를 열 수있는 것보다 기본 키 열을 선택하고 속성 창에서 true를 반환합니다. – Silvermind

관련 문제