C# 需要一些关于自定义角色表的帮助和提示吗

C# 需要一些关于自定义角色表的帮助和提示吗,c#,wpf,entity-framework,C#,Wpf,Entity Framework,我使用c作为主要编程语言。链接EF到WPF应用程序。 我想要的东西:保存\加载角色或/和玩家信息并使用它的可能性。 我拥有的东西: 带有播放器和字符表的本地数据库。 玩家有: P_ID P_Name 人物有 id (int) name (nvarchar50) pid (int) STR (int) DEX (int) INT (int) 我发现实体框架是一个很好的解决方案,至少对于我想要的东西我是这样认为的 目前我有如下角色和玩家类: public class Character {

我使用c作为主要编程语言。链接EF到WPF应用程序。 我想要的东西:保存\加载角色或/和玩家信息并使用它的可能性。 我拥有的东西:

带有播放器和字符表的本地数据库。 玩家有:

P_ID 
P_Name
人物有

id (int)
name (nvarchar50)
pid (int)
STR (int)
DEX (int)
INT (int)
我发现实体框架是一个很好的解决方案,至少对于我想要的东西我是这样认为的

目前我有如下角色和玩家类:

public class Character
{
    [Key]
    public int id { get; set; }
    public string name { get; set; }
    public int pid { get; set; }
    public int STR { get; set; }
    public int DEX { get; set; }
    public int INT { get; set; }

    [ForeignKey("pid")]
    public virtual Player Player { get; set; }
}

public class Player
{
    [Key]
    public int P_ID { get; set; }
    public string P_Name { get; set; }
    public virtual ICollection<Character> Characters { get; set; }
}
PlayerData.ItemsSource = mdb.Players.ToList();
int xid = PlayerBox.SelectedIndex;

indextest.Content = xid;

专用无效播放机框\u选择更改对象发件人,选择更改对象发件人e { 如果CharacterBox!=null CharacterBox.Items.Clear

    int xid = charlist[PlayerBox.SelectedIndex].pid;

    indextest.Content = xid;

    foreach (string name in getcharbyid(xid))
    {
        this.CharacterBox.Items.Add(name);
    }
应用程序启动时显示:System.ArgumentOutOfRangeException

比较id和索引,如下所示:

public class Character
{
    [Key]
    public int id { get; set; }
    public string name { get; set; }
    public int pid { get; set; }
    public int STR { get; set; }
    public int DEX { get; set; }
    public int INT { get; set; }

    [ForeignKey("pid")]
    public virtual Player Player { get; set; }
}

public class Player
{
    [Key]
    public int P_ID { get; set; }
    public string P_Name { get; set; }
    public virtual ICollection<Character> Characters { get; set; }
}
PlayerData.ItemsSource = mdb.Players.ToList();
int xid = PlayerBox.SelectedIndex;

indextest.Content = xid;
看起来id和索引或者我做错了什么是一样的。 更改foreach的尝试失败

更改了某些代码以向characterbox添加字符:

    int xid;
    Int32.TryParse(PlayerBox.SelectedValue.ToString(), out xid);
    indextest.Content = xid;
    CharacterBox.Items.Add (from Character in charlist where Character.pid == xid select Character);
    CharacterBox.DisplayMemberPath = "name";
    CharacterBox.SelectedValuePath = "id";
看起来像是添加到combobox中的字符,但我看不到它们的名称和值:

空字符组合框?

通过使用LINQ查询解决。我的想法是对的-有一个简单的解决方案!

如果我做错了什么,有很多简单的方法可以做到,比如扔掉EF和stat处理sql命令,我会很高兴看到你的想法和建议。
    int xid;
    Int32.TryParse(PlayerBox.SelectedValue.ToString(), out xid);
    indextest.Content = xid;
    CharacterBox.Items.Add (from Character in charlist where Character.pid == xid select Character);
    CharacterBox.DisplayMemberPath = "name";
    CharacterBox.SelectedValuePath = "id";