您好我正在尝试将电子邮件列表保存到我的数据库中,但我无法获取要保存的列表。
这是模型中的List:
[Display(Name = "Mailing List")]
public List<string> MailingList { get; set; }
这是控制器方法,我尝试将新的字符串电子邮件添加到列表中并将其保存到数据库
public ActionResult VenueMailingList(int id)
{
//Get UserID and Email
string UserId = User.Identity.GetUserId();
string email = User.Identity.Name;
//Check if the user is logged in
if (UserId != null)
{
ViewBag.LoggedIn = true;
//Add the users email to this venues email mailing list
Venue venue = db.Venues.Find(id);
//If list is null, initlise it
if (venue.MailingList == null)
{
venue.MailingList = new List<string>();
}
venue.MailingList.Add(email);
db.SaveChanges();
}
return View();
}
答案 0 :(得分:0)
您需要在DbContext中更改数据库,以便EntityFramework跟踪更改并将这些更改保存到您的数据库中。您需要以下代码:
using (var context = new MyDbContext())
{
Venue venue = context.Venues.Find(id);
//If list is null, initlise it
if (venue.MailingList == null)
{
venue.MailingList = new List<string>();
}
venue.MailingList.Add(email);
context.SaveChanges();
}
以下链接提供了有关如何使用EntityFramework的精彩教程:http://www.entityframeworktutorial.net/EntityFramework4.3/add-entity-using-dbcontext.aspx。
答案 1 :(得分:0)
试试这个:
if (venue.MailingList == null)
{
venue.MailingList = new List<string>();
}
venue.MailingList.Add(email);
venue.MailingList.Entry(email).State = EntityState.Added; // you need to add this statement
db.SaveChanges();
答案 2 :(得分:0)
请使用addrange方法。
db.YourTable.AddRange(YourList)
db.SaveChanges();