請考慮下面的數據庫表結構。 (數據庫:地理)導航屬性隨機顯示爲空
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視圖顯示國家列表。有一個「視圖」鏈接對每個調用WCF方法(GetCountrySummary)並顯示在另一個視圖上。
問題是MVC在某些城市的「語言」導航屬性中隨機接收到NULL。說,如果我第一次點擊印度的「查看」,它會正常工作,如果我下次點擊它,它會給出「對象引用爲空」的錯誤,當我檢查我的「CountrySummary」對象時,它正在某些城市的語言爲NULL(但它們在數據庫中)。
每當我在WCF Test客戶端運行它,它總是填充貨幣。但是在MVC應用程序中調用它時有時會失敗。
任何想法爲什麼會發生這種情況?
您在哪裏創建存儲庫實例?它被緩存並被重用?如果是這樣,這可能是問題所在。 – qujck
1)我在WCF項目的Start方法中註冊我的存儲庫(我已經使用WebActivator注入Start)。 2)我沒有做任何事情來緩存。3)在「Global.asax」事件中創建了MVC項目中的WCF服務實例。 – Nirman