我们得到了一个存储新闻订阅(ID,EmailAddress,MyNewsletter1等)的表格,当我们保存订阅时,我们首先检查是否已经为该电子邮件地址设置了订阅。如果有,我们更新该记录,如果没有我们插入一个新记录。不知怎的,一个重复的电子邮件地址在那里偷偷摸摸,我不知道如何。主键是ID,所以我们可以将其改为EmailAddress,但我仍然好奇这是如何发生的。这可能是一个并发问题吗?这是代码:创建了重复记录,但是为什么? (linq to sql)
public static void SaveSubscription(NewsletterSubscription subscription)
{
using (MyDataContext db = new MyDataContext())
{
// does this email already have subscriptions?
NewsletterSubscription result = db.NewsletterSubscriptions.SingleOrDefault(r => r.Email == subscription.Email);
if (result != null)
{
// update instead of creating new record
result.MyNewsletter1 = subscription.MyNewsletter1;
result.MyNewsletter2 = subscription.MyNewsletter2;
result.MyNewsletter3 = subscription.MyNewsletter3;
result.MyNewsletter4 = subscription.MyNewsletter4;
}
else
{
// create new subscription record
subscription.RegisterDate = DateTime.Now;
db.NewsletterSubscriptions.InsertOnSubmit(subscription);
}
db.SubmitChanges();
}
}
感谢,
Annelie
会做出这些改变,感谢您的帮助! – annelie 2011-02-25 14:15:36