以下を私のデータベースのテーブル構造と考えてください。(データベース:地理)
Country >> CountryId, CountryName
City >> CityId, CityName, LanguageId
Language >> LanguageId, LanguageName
以下は、私の WCF プロジェクト (プロジェクト: Geography.WCFPortal) のメソッドです。
[OperationContract]
public CountrySummary GetCountrySummary(string countryName)
{
CountrySummary countrySummaryRows = new CountrySummary();
var result = from city in repository.GetQuery<City>()
.Include("Language")
.Where(city => city.Country.CountryName == countryName)
select city;
countrySummaryRows.Country = this.GetCountry(countryName);
foreach (var city in result.OrderByDescending(m => m.CityName).ToList())
{
countrySummaryRows.CityCollection.Add(city);
}
return countrySummaryRows;
}
以下は、CountrySummary クラスの定義方法です: (プロジェクト: Geography.Contracts)
[Serializable]
[DataContract]
public class CountrySummary
{
public CountrySummary()
{
this.CityCollection = new List<City>();
}
[DataMember]
public List<City> CityCollection { get; set; }
[DataMember]
public Country Country { get; set; }
}
私の MVC アプリケーションは GetCountrySummary メソッドを呼び出しています。
私の MVC ビューの 1 つは、国のリストを表示しています。それらのそれぞれに対して、WCF メソッド (GetCountrySummary) を呼び出して別のビューに表示する "View" リンクがあります。
問題は、MVC が一部の都市の「言語」ナビゲーション プロパティでランダムに NULL を受け取ることです。インドで初めて「表示」をクリックすると正常に動作し、次にクリックすると「オブジェクト参照がnullです」というエラーが表示され、「CountrySummary」オブジェクトを確認すると、一部の都市では言語が NULL です (ただし、データベースにはあります)。
これを WCF テスト クライアントで実行すると、常に通貨が入力されます。しかし、MVC アプリケーションで呼び出されているときに失敗することがあります。
なぜこれが起こっているのか、何か考えはありますか?