C# 使控件(DataGridView)适应数据结构

C# 使控件(DataGridView)适应数据结构,c#,linq,datagridview,C#,Linq,Datagridview,我正在设计一个小型桌面Windows窗体应用程序来存储用户帐户信息,即用户名和密码。我正在使用C#/LINQ到SQL和sqlce 该应用程序允许用户创建帐户类别,例如社交媒体/工作/银行,并在这些类别下创建帐户。该应用程序允许用户创建“动态”帐户,这意味着每个类别可以有不同的字段。例如,“社交媒体”类别下的帐户可能只需要用户名和密码字段。“银行”项下的账户可能需要一个用于路由号码、账号等的字段 以下是数据结构的ERD(关系应该很明显,但在此屏幕截图中尚未定义): 下面是一个俗气的、彩色编码的前

我正在设计一个小型桌面Windows窗体应用程序来存储用户帐户信息,即用户名和密码。我正在使用C#/LINQ到SQL和sqlce

该应用程序允许用户创建帐户类别,例如社交媒体/工作/银行,并在这些类别下创建帐户。该应用程序允许用户创建“动态”帐户,这意味着每个类别可以有不同的字段。例如,“社交媒体”类别下的帐户可能只需要用户名和密码字段。“银行”项下的账户可能需要一个用于路由号码、账号等的字段

以下是数据结构的ERD(关系应该很明显,但在此屏幕截图中尚未定义):

下面是一个俗气的、彩色编码的前端工作原理原型:

我面临的问题是如何使用给定类别的所有帐户/凭据填充DataGridView。我认为应该为数据库中的每个帐户向DataGridView添加一个新行,但我不确定如何使用属于该行的凭据填充该行。我的第一个猜测是,我需要查询与行的帐户id匹配的所有凭据,并将其插入到正确的字段/列中。下面的一些逻辑代码似乎暗示这将是一个混乱的解决方案:

foreach (Account acct in context.Accounts)
{
    dataGridView.Rows.Add()

    foreach (Credential cred in context.Credentials)
    {
        if (cred.account_id == acct.id)
        {
            // check to see which field the credential belongs to
            // and insert it into that field for the current row
        }
    }
}

有没有更好的解决方案的建议?我可以看到很多问题。作为一名初学者,我非常愿意为GUI重新构建数据库或其他想法。如果您需要任何澄清,请告诉我。

您是否考虑过使用DataAdapters填充表格?你可以在这里找到一个教程

请不要在问题标题中包含有关所用语言的信息,除非没有它就没有意义。标签就是为了这个目的。谢谢你的提示。注意。