0

以下を私のデータベースのテーブル構造と考えてください。(データベース:地理)

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 アプリケーションで呼び出されているときに失敗することがあります。

なぜこれが起こっているのか、何か考えはありますか?

4

1 に答える 1

1

私の推測では、リポジトリインスタンスは、WCF開始イベントで初期化されているために再利用されています。GetCountrySummaryメソッド内に新しいインスタンスを作成して、確認してください。

詳細については、この投稿を参照してください

于 2013-01-18T08:22:41.097 に答える