请将以下内容视为我的数据库的表结构。 (数据库:地理)
Country >> CountryId, CountryName
City >> CityId, CityName, LanguageId
Language >> LanguageId, LanguageName
以下是我的WCF项目中的方法(Project: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类的定义方式:(Project: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视图显示了国家/地区列表。每个都有一个“View”链接,它调用WCF方法(GetCountrySummary)并将其显示在另一个视图上。
问题是MVC在某些城市的“语言”导航属性中随机接收NULL。比方说,如果我第一次在印度点击“查看”,它工作正常,如果我下次点击它,它会给出“对象引用为空”的错误,当我检查我的“CountrySummary”对象时,它有某些城市的语言为NULL(但它们在数据库中)。
每当我在WCF测试客户端中运行它时,它总是填充货币。但是在MVC应用程序中被调用时有时会失败。
知道为什么会这样吗?
答案 0 :(得分:1)
我的猜测是存储库实例由于在WCF启动事件中初始化而被重用。尝试在GetCountrySummary方法中创建一个新实例以进行确认。
有关详细信息,请参阅this post