我已經將使用 linq 的服務映射到 Sql 類,并且我正在使用 wcf 庫用于 vs 2019 并在客戶端中使用 win 表單應用程式。我正在嘗試以下一種方式將為 linq 創建的類發送到 sql
public List<Trades> GetAllTradings()
{
context = new DCStockTradingDataContext();
List<Trades> tradings = (from t in context.Trades
select t).ToList();
return tradings;
}
和客戶
private void btnRun_Click(object sender, EventArgs e)
{
Service1Client client = new Service1Client();
var trades = client.GetAllTradings();
dgViewStocks.DataSource = trades;
//string ret = client.GetData("Hello");
//Console.WriteLine(ret);
}
我不知道發生了什么,也不知道出了什么問題
服務

并且客戶端收到所有空值

我將不勝感激對此的任何幫助,并在此先感謝您
uj5u.com熱心網友回復:
如果你在 WCF 客戶端得到空回應,一些建議:
- 嘗試在打開請求和回應驗證的情況下呼叫 SoapUi 中的服務。它可能有助于檢測問題。
- 除錯 Reference.cs 檔案以更仔細地查看發生了什么
- 使用 MessageInspector 查看 AfterReceiveReply 方法中收到的內容
- 仔細檢查命名空間,由于Reference.cs中的命名空間和實際服務中的命名空間不同,回應往往無法反序列化
uj5u.com熱心網友回復:
感謝您的回復以及我所做的一切。
我發現我必須如何使用 linq to sql 類和 wcf。我們需要考慮到您需要將 linq 類的 List 轉換為 List<string。我做了什么
enter code here
public List<string[]> GetAllStocks()
{
context = new DCStockTradingDataContext();
System.Data.Linq.Table<Stocks> stocks = context.GetTable<Stocks>();
var allStock = (from st in stocks
select new
{
stockId = (string) st.CodeID,
currency = (char) st.Currency,
stName = st.Name,
price = (decimal) st.Price,
volument = (decimal) st.Volumen
}).ToList();
List<string[]> listRetruned = new List<string[]>();
foreach (var tr in allStock)
{
string[] t = new string[5];
t[0] = tr.stockId;
t[1] = tr.currency.ToString();
t[2] = tr.stName;
t[3] = tr.price.ToString();
t[4] = tr.volument.ToString();
listRetruned.Add(t);
}
return listRetruned;
}
和客戶
我用預期的資料創建了一個模型類
public class TradingModel
{
public string TradeID { get; set; }
public string StockId { get; set; }
public decimal Bid { get; set; }
public int BidQty { get; set; }
public decimal Ask{get;set;}
public int AskQty { get; set; }
public decimal Last { get; set; }
}
最后是方法
List<TradingModel> models = new List<TradingModel>();
for(int i = 0; i < trades.Length; i )
{
TradingModel model = new TradingModel()
{
Ask = Convert.ToDecimal(trades[i][0]),
Bid = Convert.ToDecimal(trades[i][1]),
BidQty = Convert.ToInt32(trades[i][2]),
AskQty = Convert.ToInt32(trades[i][3]),
Last = Convert.ToDecimal(trades[i][4]),
StockId = trades[i][5],
TradeID = trades[i][6],
};
models.Add(model);
}
dgViewStocks.DataSource = models;
我不確定這是否是跳到下一步的最佳方式,但它對我有用。如果有人像我一樣在尋找此資訊,浪費了幾天的時間來尋找解決方案,那么我會放棄我所做的。
當然有更改服務并再次生成代理
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/359582.html
