C# MVC将列表保存到数据库
您好,我正在尝试将电子邮件列表保存到我的数据库中,但我在保存列表时遇到问题 这是模型中的列表:C# MVC将列表保存到数据库,c#,asp.net,asp.net-mvc,C#,Asp.net,Asp.net Mvc,您好,我正在尝试将电子邮件列表保存到我的数据库中,但我在保存列表时遇到问题 这是模型中的列表: [Display(Name = "Mailing List")] public List<string> MailingList { get; set; } [显示(Name=“邮件列表”)] 公共列表邮件列表{get;set;} 这是控制器方法,我试图在其中向列表中添加一个新的字符串电子邮件,并将其保存到数据库中 public ActionResult VenueMailingLis
[Display(Name = "Mailing List")]
public List<string> MailingList { get; set; }
[显示(Name=“邮件列表”)]
公共列表邮件列表{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();
}
public ActionResult-VenueMailingList(int-id)
{
//获取用户ID和电子邮件
字符串UserId=User.Identity.GetUserId();
字符串email=User.Identity.Name;
//检查用户是否已登录
if(UserId!=null)
{
ViewBag.LoggedIn=true;
//将用户电子邮件添加到此场馆电子邮件邮寄列表
场馆=db.VICENTES.Find(id);
//如果列表为空,则初始化它
如果(vention.MailingList==null)
{
vitune.MailingList=新列表();
}
地点。邮件列表。添加(电子邮件);
db.SaveChanges();
}
返回视图();
}
您需要在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();
}
使用(var context=new MyDbContext())
{
地点=上下文.地点.查找(id);
//如果列表为空,则初始化它
如果(vention.MailingList==null)
{
vitune.MailingList=新列表();
}
地点。邮件列表。添加(电子邮件);
SaveChanges();
}
以下链接提供了有关如何使用EntityFramework的精彩教程:。试试这个:
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();
if(vention.MailingList==null)
{
vitune.MailingList=新列表();
}
地点。邮件列表。添加(电子邮件);
地点.MailingList.Entry(email).State=EntityState.Added;//您需要添加此语句
db.SaveChanges();
请使用addrange方法
db.YourTable.AddRange(YourList)
db.SaveChanges();
您尚未提供实际问题的详细信息。运行此操作时,您是否在某个时候遇到错误?如果是,您可以将该信息添加到问题中吗?问题是列表没有保存到数据库。请在您的模型类中使用此选项。
[DataType(DataType.EmailAddress)]
我还可以建议您,因为您使用的是EF,并且显然有AspNetUsers登录表,当有人注册新邮件时,只需使用触发器自动更新MailingList表(在AspNetUsers表中添加一行)