3
一段時間以來,我一直在試圖找到一種解決方案,以便如何在遷移配置中使用種子方法,而不必擔心下次運行種子方法時更新的數據被覆蓋。實體框架遷移的條件種子
簡而言之,我的理解是addorupdate(如各種教程中所演示的)將重置每個對象的所有值,從而覆蓋該對象最初播種後可能發生的任何更改。
在我目前的項目中,我希望能夠播種一組默認的emailtemplates。將它們放入種子方法將確保它們總是出現在我的代碼中。但是,我希望應用程序的用戶能夠按照他們認爲合適的方式編輯一些內容。所以我不能很好地讓模板重置種子方法運行的所有內容,因爲它會刪除更改。
我的解決辦法是這樣的:
protected override void Seed(Jobboard.Sandbox.Model.JobboardContext context)
{
Guid DefaultTemplateGuid = Guid.Parse("xxxxx");
context.Templates.AddOrUpdate(
t => t.Guid,
context.Templates.FirstOrDefault(x => x.Guid == DefaultTemplateGuid)
?? new Template {
Guid = DefaultTemplateGuid,
Name = "Default Template",
Content = "Some Default Content"
}
);
}
這所有的一切似乎工作得很好,我的問題是,如果任何人都可以發現任何問題,做種子這種方式,因爲它是不完全的EF小組建議的方式使用這個功能,我寧願不在晚些時候頭痛。
非常感謝您的閱讀。