簡體   English   中英

MVC C#將列表保存到數據庫

[英]MVC C# Saving a list to database

我正在使用CreateAMeeting方法將屬性保存在數據庫中。 當我檢查數據庫時,我可以看到保存的所有屬性(列表除外),在數據庫中看不到列表屬性。 我一直在搜尋,但是找不到是否可以看到它們,或者我只是沒有正確保存它們。 如果使用斷點,我可以看到Meeting(db.Meetings.Add(meeting);)模型具有我在“時間”列表中添加的時間。

當我稍后嘗試在ChooseTimes方法中檢索列表時,該列表為null。 我不知道問題是我保存的是錯誤的還是其他錯誤。 我在做什么錯,有可能在數據庫中看到保存的列表嗎?

我還沒有完成fooreachloop,所以請不要關注它。

public class MeetingController : BaseController
{
    private ApplicationSignInManager _signInManager;
    private ApplicationUserManager _userManager;
    public static Meeting NewMeeting;
    public static List<DateTime> TempTimes = new List<DateTime>();

    public ActionResult CreateMeeting()
    {
        return View();
    }

    public ActionResult CreateAMeeting(Meeting meeting)
    {
        var userName = User.Identity.Name;
        var user = db.Users.Where(u => u.UserName == userName).SingleOrDefault();
        var model = new MeetingPeopleViewModel();

        meeting.Creator = user;
        meeting.Invited.Add(user);
        meeting.Times = TempTimes;
        meeting.Start = DateTime.Now;
        meeting.End = meeting.Start.AddMinutes(meeting.Minutes);
        db.Meetings.Add(meeting);
        db.SaveChanges();


        return View("AddToMeeting", model);
    }

    public ActionResult AddTempTime(DateTime Start, Meeting meeting)
    {
        TempTimes.Add(Start);
        meeting.Times = TempTimes;
        return View("CreateMeeting", meeting);
    }

    public ActionResult ChooseTimes()
    {
        var userName = User.Identity.Name;
        var user = db.Users.Where(u => u.UserName == userName).SingleOrDefault();
        Meeting meeting = new Meeting();

        foreach(var item in db.Meetings)
        {
            if(item.Invited.Contains(user))
            {
                meeting = item;
            }
        }
        return View(meeting);
    }

這是我的會議模型。

    public class Meeting
{

    public int Id { get; set; }
    public string Title { get; set; }
    public ApplicationUser Creator { get; set; }
    public ICollection<ApplicationUser> Invited { get; set; }
    public double Minutes { get; set; }
    public DateTime Start { get; set; }
    public DateTime End { get; set; }
    public ICollection<DateTime> Times { get; set; }
    public bool AllDay { get; set; }

    public ICollection<ApplicationUser> User { get; set; }
    public ApplicationUser UserNotis { get; set; }

}

據我所知,您無法將文字列表保存到數據庫中,可以通過遍歷列表並保存每個唯一記錄,將列表中的所有項目保存到數據庫中。

public class MeetingController : BaseController
{
    private ApplicationSignInManager _signInManager;
    private ApplicationUserManager _userManager;
    public static Meeting NewMeeting;
    public static List<DateTime> TempTimes = new List<DateTime>();

    public ActionResult CreateMeeting()
    {
       return View();
    }

public ActionResult CreateAMeeting(Meeting meeting)
{
    var userName = User.Identity.Name;
    var user = db.Users.FirstOrDefault(u => u.UserName == userName);
    var model = new MeetingPeopleViewModel();

    meeting.Creator = user;
    meeting.Invited.Add(user);
    meeting.Times = TempTimes;
    meeting.Start = DateTime.Now;
    meeting.End = meeting.Start.AddMinutes(meeting.Minutes);
    db.Meetings.Add(meeting);
    db.SaveChanges();


    return View("AddToMeeting", model);
}

public ActionResult AddTempTime(DateTime Start, Meeting meeting)
{
    TempTimes.Add(Start);
    meeting.Times = TempTimes;
    return View("CreateMeeting", meeting);
}

public ActionResult ChooseTimes()
{
    var userName = User.Identity.Name;
    var user = db.Users.FirstOrDefault(u => u.UserName == userName);
    Meeting meeting = new Meeting();

    List<Meeting> Meetings = db.Meetings.ToList();

    foreach (var item in Meetings)
    {
        if (item.Invited.Contains(user))
        {
            meeting = item;
        }
    }

    return View(meeting);
}

有更好的方法可以完成您想做的事情,但這可以解決您的問題。

您必須創建一個從數據庫填充的會議列表,以便在您進行迭代時可以枚舉而不是可以查詢,

我試圖將整個列表保存在一個字段中,這是不可能的。 因此,我必須使用數據庫創建一個新模型以將evrything保存在列表中。 如果其他任何人在將項目保存在列表中時遇到問題,這是我的保存方法。

    public void SaveTimes(Meeting meeting)
    {
        foreach (var time in TempStart)
        {
            var mt = new MeetingTimes
            {
                MeetingId = meeting.Id,
                Meeting = meeting,
                Time = time
            };
            db.MeetingTimes.Add(mt);
            db.SaveChanges();
        }
    }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM