并非所有代码路径 return 一个值 WCF 服务
Not all code paths return a value WCF Service
您好,我正忙着将我的 SQL 数据库连接到我的 WCF RESTful 服务。 这是我的问题: WebService.Service1.GetAllTrucks(string)': not all code paths return a value
。每个报价单都有一辆卡车或多辆卡车与外键相连,我希望能够在每个报价单中查看每辆卡车(我试图在方法中这样做:'GetAllTrucks') .
IService1.cs
[OperationContract]
[WebInvoke(Method = "GET", ResponseFormat = WebMessageFormat.Json, BodyStyle = WebMessageBodyStyle.Wrapped, UriTemplate = "getTrucks")]
List<wsTrucks> GetTrucks();
[OperationContract]
[WebInvoke(Method = "GET", ResponseFormat = WebMessageFormat.Json, BodyStyle = WebMessageBodyStyle.Wrapped, UriTemplate = "getAllTrucks/{truckID}")]
List<wsQuote> GetAllTrucks(string truckID);
Service1.svc.cs
public List<wsTrucks> GetTrucks()
{
NorthwindDataContext dc = new NorthwindDataContext();
List<wsTrucks> results = new List<wsTrucks>();
foreach (tblTruck truck in dc.tblTrucks)
{
results.Add(new wsTrucks()
{
TruckID = truck.ID,
TrucksName = truck.TRUCKNAME
});
}
return results;
}
public List<wsQuote> GetAllTrucks(string truckID)
{
NorthwindDataContext dc = new NorthwindDataContext();
List<wsQuote> results = new List<wsQuote>();
System.Globalization.CultureInfo ci = System.Globalization.CultureInfo.GetCultureInfo("en-US");
foreach (tblQuote quote in dc.tblQuotes.Where(s => s.ID.ToString() == truckID))
{
results.Add(new wsQuote()
{
QuoteID = quote.ID,
QuoteNumber = quote.QUOTENUMBER
});
return results;
}
}
引用
[DataContract]
public class wsQuote
{
[DataMember]
public int QuoteID { get; set; }
[DataMember]
public string QuoteNumber { get; set; }
}
卡车
[DataContract]
public class wsTrucks
{
[DataMember]
public int TruckID { get; set; }
[DataMember]
public string TrucksName { get; set; }
}
谢谢。
您应该能够通过将 GetAllTrucks(string truckID) 方法中的 return results
移动到循环之后来解决此问题:
public List<wsQuote> GetAllTrucks(string truckID)
{
NorthwindDataContext dc = new NorthwindDataContext();
List<wsQuote> results = new List<wsQuote>();
System.Globalization.CultureInfo ci = System.Globalization.CultureInfo.GetCultureInfo("en-US");
foreach (tblQuote quote in dc.tblQuotes.Where(s => s.ID.ToString() == truckID))
{
results.Add(new wsQuote()
{
QuoteID = quote.ID,
QuoteNumber = quote.QUOTENUMBER
});
// return results; <----- HERE! Move this to after the loop
}
return results; // Move it here.
}
问题是如果列表为空,foreach
循环体将被跳过,循环后没有return语句执行。
您好,我正忙着将我的 SQL 数据库连接到我的 WCF RESTful 服务。 这是我的问题: WebService.Service1.GetAllTrucks(string)': not all code paths return a value
。每个报价单都有一辆卡车或多辆卡车与外键相连,我希望能够在每个报价单中查看每辆卡车(我试图在方法中这样做:'GetAllTrucks') .
IService1.cs
[OperationContract]
[WebInvoke(Method = "GET", ResponseFormat = WebMessageFormat.Json, BodyStyle = WebMessageBodyStyle.Wrapped, UriTemplate = "getTrucks")]
List<wsTrucks> GetTrucks();
[OperationContract]
[WebInvoke(Method = "GET", ResponseFormat = WebMessageFormat.Json, BodyStyle = WebMessageBodyStyle.Wrapped, UriTemplate = "getAllTrucks/{truckID}")]
List<wsQuote> GetAllTrucks(string truckID);
Service1.svc.cs
public List<wsTrucks> GetTrucks()
{
NorthwindDataContext dc = new NorthwindDataContext();
List<wsTrucks> results = new List<wsTrucks>();
foreach (tblTruck truck in dc.tblTrucks)
{
results.Add(new wsTrucks()
{
TruckID = truck.ID,
TrucksName = truck.TRUCKNAME
});
}
return results;
}
public List<wsQuote> GetAllTrucks(string truckID)
{
NorthwindDataContext dc = new NorthwindDataContext();
List<wsQuote> results = new List<wsQuote>();
System.Globalization.CultureInfo ci = System.Globalization.CultureInfo.GetCultureInfo("en-US");
foreach (tblQuote quote in dc.tblQuotes.Where(s => s.ID.ToString() == truckID))
{
results.Add(new wsQuote()
{
QuoteID = quote.ID,
QuoteNumber = quote.QUOTENUMBER
});
return results;
}
}
引用
[DataContract]
public class wsQuote
{
[DataMember]
public int QuoteID { get; set; }
[DataMember]
public string QuoteNumber { get; set; }
}
卡车
[DataContract]
public class wsTrucks
{
[DataMember]
public int TruckID { get; set; }
[DataMember]
public string TrucksName { get; set; }
}
谢谢。
您应该能够通过将 GetAllTrucks(string truckID) 方法中的 return results
移动到循环之后来解决此问题:
public List<wsQuote> GetAllTrucks(string truckID)
{
NorthwindDataContext dc = new NorthwindDataContext();
List<wsQuote> results = new List<wsQuote>();
System.Globalization.CultureInfo ci = System.Globalization.CultureInfo.GetCultureInfo("en-US");
foreach (tblQuote quote in dc.tblQuotes.Where(s => s.ID.ToString() == truckID))
{
results.Add(new wsQuote()
{
QuoteID = quote.ID,
QuoteNumber = quote.QUOTENUMBER
});
// return results; <----- HERE! Move this to after the loop
}
return results; // Move it here.
}
问题是如果列表为空,foreach
循环体将被跳过,循环后没有return语句执行。