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 视图之一是显示国家列表。它们每个都有一个“视图”链接,它调用 WCF 方法 (GetCountrySummary) 并将其显示在另一个视图上。

问题是 MVC 在某些城市的“语言”导航属性中随机接收 NULL。说,如果我第一次在印度单击“查看”,它工作正常,如果我下次单击它,它会给出“对象引用为空”的错误,当我检查我的“CountrySummary”对象时,它有某些城市的语言为 NULL(但它们在数据库中)。

每当我在 WCF 测试客户端中运行它时,它总是填充货币。但是在 MVC 应用程序中调用时有时会失败。

知道为什么会发生这种情况吗?

4

1 回答 1

1

我的猜测是存储库实例正在被重用,因为它在 WCF 启动事件中被初始化。尝试在 GetCountrySummary 方法中创建一个新实例以确认。

看到这篇文章了解更多信息

于 2013-01-18T08:22:41.097 回答