[英]Deleting DB entry with ADO.NET
我有以下代码连接到我的数据库,并检查表中是否存在电子邮件地址,如果存在,它将删除它,如果不存在,它将添加它。
但是,这两种选择都不起作用。 两种动作都收到相同的错误:
无法删除该对象,因为在ObjectStateManager中找不到该对象。
编码:
protected OEntities database = new OEntities();
public string NewsletterSubscriptionValidation(string emailAddress)
{
string validationMessage = "";
Newsletter newsletter = new Newsletter();
var identifier = database.Newsletters.Select(
id => id.EmailAddress);
if (identifier == null)
{
newsletter.EmailAddress = emailAddress;
newsletter.Subscribed = true;
database.Newsletters.AddObject(newsletter);
database.SaveChanges();
validationMessage = "You are now subscribed to our periodic Newsletter.";
}
else
{
newsletter.EmailAddress = emailAddress;
newsletter.Subscribed = false;
database.DeleteObject(newsletter);
database.SaveChanges();
validationMessage = "You have been unsubscribed from our periodic Newsletter.";
}
return validationMessage;
}
我什至在这里以正确的方式添加/删除数据库吗?
protected OEntities database = new OEntities();
public string NewsletterSubscriptionValidation(string emailAddress)
{
string validationMessage = "";
Newsletter newsletter = database.Newsletters.FirstOrDefault(
nl => nl.EmailAddress == emailAddress);
if (newsletter == null)
{
newsletter = new Newsletter();
newsletter.EmailAddress = emailAddress;
newsletter.Subscribed = true;
database.AddToNewsletters(newsletter);
//database.Newsletters.AddObject(newsletter);
database.SaveChanges();
validationMessage = "You are now subscribed to our periodic Newsletter.";
}
else
{
newsletter.EmailAddress = emailAddress;
newsletter.Subscribed = true;
database.AddToNewsletters(newsletter);
//database.Newsletters.AddObject(newsletter);
database.SaveChanges();
validationMessage = "You have been unsubscribed from our periodi Newsletter.";
}
return validationMessage;
}
您需要先附加附件,然后才能删除
database.Attach(newsletter);
database.DeleteObject(newsletter);
database.SaveChanges();
但是您可能想选择现有的项目,像这样
Newsletter newsletter = database.Newsletters.FirstOrDefault(nl => nl.EmailAddress == emailAddress);
if (newsletter == null)
{
newsletter = new Newsletter();
...
}
else
{
database.Attach(newsletter);
database.DeleteObject(newsletter);
database.SaveChanges();
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.