C# 如何将一个类添加到另一个具有一对多关系的类中

C# 如何将一个类添加到另一个具有一对多关系的类中,c#,database,class,C#,Database,Class,我有一个系统,用户可以登录并创建板。为此,有两个单独的类“User”和“Board” 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; se

我有一个系统,用户可以登录并创建板。为此,有两个单独的类“User”和“Board”

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; }

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; }
此行出现异常:

boardToAdd.Name = name;
我试图调用此方法以将板添加到用户类:

public User AddBoard(Board board, User user)
    {
        BulletinContext _context = new BulletinContext();
        User _user = _context.Users.Find(user.ID);

        _context.Boards.Add(board);
        _context.Users.Add(user);
            return null;

    }
编辑:该错误已解决,但我仍然无法创建附加到用户的板。为了澄清,每个板都有一个“用户ID”,该ID应该是创建板的用户的ID

编辑2:


它由一个ID、一个名称、创建日期和创建线路板的用户ID组成。

由于您没有初始化boardToAdd对象而发生的情况,其初始值为空。 尝试创建板的实例


静态板boardToAdd=新板()

看起来您尚未定义外键。所以你需要做一些类似的事情

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

}
编辑:我在代码中看不到_context.SaveChanges()。因此,如果它不存在,您可能需要添加它

如果已定义外键:

Change the User Class to create a new HashSet of Boards something like:

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

}
更改用户类以创建新的板哈希集,如:
公共用户()
{
Boards=新HashSet();
}
公共用户插件板(插件板,用户用户)
{
BulletinContext_context=新BulletinContext();
User\u User=\u context.Users.Find(User.ID);
_user.Boards.Add(board);
返回null;
}

您从未实例化boardToAdd,因此它将为空,您需要创建它的新实例。boardToAdd=新板();谢谢,错误不再出现,但我的程序仍然无法运行。现在,我得到的错误是行“_context.Users.Add(user);”上的InvalidOperationException。loggedInUser没有发生此错误的任何原因?您没有loggedInUser问题,因为您从会话中为其分配了一个用户。你能详细介绍一下新的例外情况吗。stacktrace在说什么?我现在已经删除了这一行,不再出现第二个错误,但是,我仍然不确定如何将board添加到user类中。我知道你是新手,所以我需要解释一下,你不应该为了回答同一个问题而问新问题。(现在有一句话:))对于出现的新问题,你真的应该问一个新问题。谢谢,我在中添加了这个问题,它解决了错误,但我仍然无法创建附加到用户的板。这是因为你没有正确地关联用户和板类,向board类添加用户ID和用户属性,并在插入过程中为board指定用户ID我尝试将用户ID添加到该类中,这只是在我的表中创建了第二列,名为User_ID2,并导致了大量问题。谢谢,问题是无法在board中找到用户ID的定义。请将其添加到board类中。public int User_ID{get;set;}我试过这么做。它在board表中创建了一个名为“User_ID2”的新列,然后在使用该列时尝试删除数据库时出现了许多问题。是否定义了外键?有ICollection行,并且User_ID列被标记为具有外键约束。
Change the User Class to create a new HashSet of Boards something like:

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

}