Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/316.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# MVC将列表保存到数据库_C#_Asp.net_Asp.net Mvc - Fatal编程技术网

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表中添加一行)