我的代碼一直掛在“using(SqlDataReader Reader = new cmd.ExecuteReader())”行上,拋出 StackOverflowException。對于從同一個資料庫中提取的任何其他 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"/>
uj5u.com熱心網友回復:
您的L財產實施得很奇怪。您不能在同一屬性本身的設定器中設定屬性。這將導致一個StackoverflowException.
設定欄位而不是屬性:
public Model.League L
{
get { return _L; }
set { _L = value; _TeamRepository = sdm.getTeamsinLeague(_L); }
}
請遵循命名約定。
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/416882.html
標籤:
