所以我有這樣的代碼,第一類:EF代碼優先 - 無法將NULL值插入列
我用的遷移,我嘗試種子會話表在我的初始化:
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應該是主鍵,並自動增量,這就是爲什麼你使用[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
的權利?
好還是我得到這個錯誤:
Cannot insert the value NULL into column table column does not allow nulls. INSERT fails. The statement has been terminated
在數據庫中的表看起來像這樣(請注意我用的LocalDB,並且該數據庫實例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");
}
}
由於你可以看到,修正中身份設置爲true。我沒有Update-Database
所以我不明白爲什麼這是行不通的。
你試過在數據庫上運行探查看到的是實際發送的是什麼查詢? – MattC 2014-09-05 13:18:38
@MATC不,我沒有,因爲我不知道你在說什麼,怎麼做。根據我可以找到關於實體框架的所有文檔,這不應該工作嗎? – QuantumHive 2014-09-05 13:25:32
您可以獲得EFProfiler的演示(使用EF時的關鍵工具),將它集成到您的應用程序(Main中的單行)並查看發送到SQL的語句。您的配置看起來很好,所以唯一的調試方法是查看EF發送到數據庫的內容。你也可以嘗試用'context.Sessions.Create()'替換'new Session()'。 – 2014-09-05 13:28:54