[英]Search if exist before insert in Linq DB in C# for WP8
我正在處理WP8問題應用程序,該應用程序將數據發送到DB,但是將跳過現有數據。 我有一個名為“ DBHelper.cs”的類,它包含
public static void InsertQuestion(Question oQuestion)
{
using (var context = new QuestionContext(ConnectionString))
{
if(context.DatabaseExists())
{
Question oQuestionWord = (from ostd in context.Questions where ostd.Word == oQuestion.Word select ostd).Single();
if (oQuestionWord.Word == null)
{
context.Questions.InsertOnSubmit(oQuestion);
context.SubmitChanges();
}
}
}
}
而此代碼在mainpage.xaml.cs中
protected override void OnNavigatedTo(NavigationEventArgs e)
{
Question oQuestion = new Question();
oQuestion.Word = "One";
DBHelper.InsertQuestion(oQuestion);``
oQuestion = new Question();
oQuestion.Word = "Two";
DBHelper.InsertQuestion(oQuestion);
oQuestion = new Question();
oQuestion.Word = "One";
DBHelper.InsertQuestion(oQuestion);
base.OnNavigatedTo(e);
}
構建解決方案時沒有錯誤,但是在啟動應用程序時會崩潰。
我相信錯誤的原因是Single
方法。 如果發現多個記錄,則Single
引發異常。 嘗試改用FirstOrDefault
:
var oQuestionWord = context.Questions.FirstOrDefault(q => q.Word == oQuestion.Word);
if (oQuestionWord != null && oQuestionWord.Word == null)
{
context.Questions.InsertOnSubmit(oQuestion);
context.SubmitChanges();
}
可能您沒有收到有用的異常消息,因為它發生在OnNavigatedTo
事件中OnNavigatedTo
您可能想看一下這個問題 ...
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.