首页 > 解决方案 > 将类添加到 ICollection 列表

问题描述

我有一个 C# 项目,用户可以在其中登录并创建板。用户类有一个 ICollection 用于列出特定用户制作的所有板,我试图弄清楚如何将该板添加到列表中。

这是两个类,用户类:

public class User
{
    public int ID { get; set; }
    public string Name { get; set; }
    public string Username { get; set; }
    public string Password { get; set; }
    public string UserType { get; set; }
    public DateTime LastLoginDate { get; set; }
    public virtual ICollection<Board> Boards { get; set; }
    public virtual ICollection<Post> Posts { get; set; }

这是 Board 类:

public class Board
{
    public int ID { get; set; }
    public string Name { get; set; }
    public DateTime DateCreated { get; set; }
    public virtual ICollection<Post> Posts { get; set; }

目的是每个用户都有一个他们创建的所有已添加的板的列表,因此有必要在创建时将板添加到该列表中。这是可以添加板的网络表单:

public partial class AddBoard : System.Web.UI.Page
{
    Board boardToAdd = new Board();
    User user = new User();
    Utility utility = new Utility();

    static User loggedInUser;


    protected void CreateButton_Click(object sender, EventArgs e)
    {
        string name = NameTextBox.Text;
        loggedInUser = (User)Session["loggedInUser"];

        string checkName = utility.CheckBoardName(name);
        if (checkName == "OK")
        {
            boardToAdd.Name = name;
            boardToAdd.DateCreated = DateTime.Now;
            user.AddBoard(boardToAdd, loggedInUser);
            boardToAdd.AddBoard(boardToAdd);


        }
        else
        {
            CreateLabel.Text = checkName;
        }
    }

这是我一直试图用来将板添加到列表的用户类中的方法:

public User AddBoard(Board board, User user)
    {
        BulletinContext _context = new BulletinContext();
        user.Boards.Add(board);
        return null;

    }
}

为了增加参考,这是我为了添加板而调用的板类中的方法:

public bool AddBoard(Board board)
    {
        BulletinContext _context = new BulletinContext();
        try
        {
            _context.Boards.Add(board);
            _context.SaveChanges();
            return true;
        }
        catch
        {
            return false;
        }
    }
}

标签: c#databasevisual-studio

解决方案


我已经设法解决了这个问题。我刚刚在我的方法中添加了代码来调用正在添加板的用户和要添加的板。现在看起来像这样:

public User AddBoard(Board board, User user)
    {
        BulletinContext _context = new BulletinContext();
        User _user = _context.Users.Find(user.ID);
        Board _board = _context.Boards.Find(board.ID);
        _user.Boards.Add(_board);
        _context.SaveChanges();
        return null;

    }

有必要从将板添加到 Board 类的其他方法调用此方法,以便之后发生。


推荐阅读