在特定 SQL 中获取堆栈溢出错误 WPF/C#

Getting Stack Overflow Error on specific SQL pull in WPF/C#

我的代码一直挂在 'using(SqlDataReader Reader = new cmd.ExecuteReader())' 行并抛出 WhosebugException。对于从同一个数据库中提取的任何其他 SQL,我都没有遇到过这个问题,使用相同的总体思路。我对可能导致此问题的原因感到茫然,我通过更改某些行来解决它有点麻烦,但它又回到了那条特定的行上。

public TeamRepository getTeamsinLeague(League L)
    {
        SqlCommand cmd;
        Model.TeamRepository MTR = new TeamRepository();
        Model.Team T = new Team();
        if (L == null) { L = new League { Id = 1 }; }
        String queryString = "SELECT Id, City, Name, r, g, b, Fontr, Fontg, Fontb FROM dbo.Team WHERE Team.League = " + L.Id +";";
        using (SqlConnection conn = new SqlConnection(connection_String))
        {

            conn.Open();
            cmd = new SqlCommand(queryString, conn);

            using (SqlDataReader Reader = cmd.ExecuteReader())
            {
                while (Reader.Read())
                {
                    T = new Team
                    {
                        Id = (int)Reader[0],
                        City = Reader[1].ToString(),
                        Name = Reader[2].ToString(),
                        MainRed = (int)Reader[3],
                        MainGreen = (int)Reader[4],
                        MainBlue = (int)Reader[5],
                        SecondaryRed = (int)Reader[6],
                        SecondaryGreen = (int)Reader[7],
                        SecondaryBlue = (int)Reader[8],
                    };
                    MTR.addTeam(T);
                }
            }

        }
        return MTR;
    }

在 getTeamsInLeague 的调用中编辑

//*****************************************
        //Variable Declarations
        //*****************************************

        public Model.TeamRepository _TeamRepository { get; set; }
        public Model.Team _SelectedTeam;
        public LeagueRepository _MLR { get; set; }
        private Model.League _L;
        public Model.League L { get { return _L; } set { _TeamRepository = sdm.getTeamsinLeague(L); L = value; } }
        SqlDataMap sdm = new SqlDataMap();

和相关的 XML

<ComboBox ItemsSource="{Binding _MLR.LeagueArray}" SelectedItem="{Binding L}"  DisplayMemberPath="Name" HorizontalAlignment="Left" VerticalAlignment="Top" Width="120"/>

你的 L 属性 执行得很奇怪。您不能在同一 属性 本身的 setter 中设置 属性。这将导致 WhosebugException.

设置 字段 而不是 属性:

public Model.League L
{ 
    get { return _L; } 
    set { _L = value; _TeamRepository = sdm.getTeamsinLeague(_L); } 
}

请关注naming conventions.