그래서 나는이 코드 첫 번째 클래스가 열에 NULL 값을 삽입 할 수 없습니다EF 코드 먼저
IList<Session> defaultSessions = new List<Session>();
defaultSessions.Add(new Session()
{
Start = DateTime.Parse("09/01/2014 14:00:00"),
End = DateTime.Parse("09/01/2014 14:10:00"),
Type = "pharyngeal",
PatientID = 1,
});
foreach (Session session in defaultSessions)
{
context.Sessions.Add(session);
}
SessionID가 기본 키이고 Auto-Incremented라고 가정하기 때문에 [DatabaseGenerated(DatabaseGeneratedOption.Identity)]
을 올바르게 사용하는 이유는 무엇입니까?
잘 여전히이 오류를 얻을 :
데이터베이스의 테이블이 (내가 LocalDB를 사용하고 있습니다, 데이터베이스 인스턴스Cannot insert the value NULL into column table column does not allow nulls. INSERT fails. The statement has been terminated
mssqllocaldb
아래처럼 보이는
:
무엇 오전 내가 일을 잘못
편집 : 나는 데이터베이스에, 신원이 FALSE
이라고 지적 이 스크린 샷 참조 :
최신 이전에, 내가 정체성에 대한 수정을했기 때문에 이것은 나를 이상한 파업은 (내가이 질문에 제공하는 단지 클래스의), 및 파일은 다음과 같습니다
public partial class IdentityFixes : DbMigration
{
public override void Up()
{
DropPrimaryKey("dbo.Admin");
DropPrimaryKey("dbo.Session");
AlterColumn("dbo.Admin", "AdminID", c => c.Int(nullable: false, identity: true));
AlterColumn("dbo.Session", "SessionID", c => c.Int(nullable: false, identity: true));
AddPrimaryKey("dbo.Admin", "AdminID");
AddPrimaryKey("dbo.Session", "SessionID");
}
public override void Down()
{
DropPrimaryKey("dbo.Session");
DropPrimaryKey("dbo.Admin");
AlterColumn("dbo.Session", "SessionID", c => c.Int(nullable: false));
AlterColumn("dbo.Admin", "AdminID", c => c.Int(nullable: false));
AddPrimaryKey("dbo.Session", "SessionID");
AddPrimaryKey("dbo.Admin", "AdminID");
}
}
로 당신은 확인할 수 있습니다, 정체성은 수정에서 사실로 설정됩니다. 나는 Update-Database
을 수행했는데 왜 이것이 작동하지 않는지 이해하지 못합니다.
는 실제로 전송되는 내용 쿼리를 확인하기 위해 데이터베이스에 프로파일 러를 실행 봤어? – MattC
@MattC 아니요. 당신이 무슨 말을하고 어떻게하는지 모르기 때문에 제가하지 않았습니다. Entity Framework에 관한 모든 설명서에 따르면이 기능을 사용해야합니까? – QuantumHive
EFProfiler 데모 (EF로 작업 할 때 중요한 도구)를 응용 프로그램에 통합하고 (Main의 한 줄) SQL에 전송되는 명령문을 볼 수 있습니다. 구성이 잘되었으므로 디버깅 할 수있는 유일한 방법은 EF가 데이터베이스로 보내는 내용을 보는 것입니다. 'new Session()'을'context.Sessions.Create()'로 바꾸어보십시오. –