我在這裏遇到了一個令我頭痛的問題。這是一個非常簡單的表格插入一個非常簡單的表格...我做了一千次的東西,但由於某種原因不在這裏工作。使用EF 4.1插入不保存代碼優先
基本上,我正在運行一個簡單的INSERT(通過存儲庫模式),然後保存上下文更改。沒有錯誤,我可以單步執行,但記錄只是不在數據庫中。爲了(希望)覆蓋我的屁股對抗愚蠢的興趣:我知道我連接到正確的數據庫,因爲它提取種子數據就好(並且在我的應用中只有1個連接字符串)。另外,我知道數據庫不會每次都重建。
下面是調用代碼:
var result = new Core.Models.Poll
{
ElectionId = electionId,
DatePublished = pubDate,
DateCreated = DateTime.Now,
NameEn = nameEn,
NameFr = nameFr,
Params = splitVals,
Url = url,
Slug = String.Empty
};
Components.PollRepository.Insert(result);
Components.PollRepository.Save();
這裏是信息庫中的方法:
public void Insert(Poll poll)
{
Context.Polls.Add(poll);
}
public void Save()
{
Context.SaveChanges();
}
在Context.Polls.Add(poll);
行,我檢查我的對象......當我手動運行在輪詢中使用值插入SSMS中的語句,創建記錄沒有問題。當我在下一行(}
)運行Context.Entry(poll)
時,我看到它的狀態爲已添加(如預期的那樣)。
我在本地開發機器上使用IIS Express在SQLEXPRESS上運行此操作。
哦,這裏的投票類的鍵(我試過DatabaseGenerated
屬性,沒有運氣):
[Key]
//[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public int Id { get; set; }
任何幫助,甚至什麼都去嘗試,是極大的讚賞。
啊,我應該更清楚了。這是一個WCF REST服務。我從插入請求中獲取完全不同的請求中的記錄。 我按照你的建議檢查了聲明,它們都來自Ninject,所以我認爲我在那裏很安全。 (即,插入發生在與提取相同的組件上:'Components.PollRepository')。 感謝您的建議,但! –
我並不太在意抓取記錄,而是在這裏重要的插入和保存操作。我已經添加到我的答案。 –
Scott的正確答案+4am =我的不理解。我今天早上重新閱讀你的答案,這很有道理。錯誤發生在Ninject配置中。謝謝! –