[英]Is it possible to get LINQ projections from WCF service?
Automapper有一個非常不錯的擴展來獲取投影。
在我們應用程序的BL中,我們可以定義如下方法:
IEnumerable<TEntityProjection> GetProjections()
{
return _context.EntitiesSet.Project().To<TEntityProjection>();
}
這有助於BL保持非常簡單。 對於每個投影變體,我們不需要許多不同的方法。
但是... WCF服務不支持開放的泛型。
因此,我正在尋找一種解決方案,該方案允許服務客戶端僅獲取所需的實體屬性。
可能的解決方案是基於WCF的Linq(基於BLToolkit)。 在后台,linq查詢解析為SqlQuery(SQL AST),進行序列化並發送到WCF LINQService。 該服務為DB(SQl Server,Oracle,MySql等)創建一個sql查詢,執行該查詢並返回數據。 支持匿名類型。
查詢樣本:
var client = new DataModel();
var q = from p in client.Person
select new
{
p.PersonID,
p.FirstName,
p.MiddleName,
p.LastName,
p.Gender
};
foreach (var p in q)
Console.WriteLine(p);
更多信息: http : //bltoolkit.net/Doc.LinqDataContext.ashx
范例: https : //github.com/igor-tkachev/bltoolkit/blob/master/Demo/Linq/OverWCF/Program.cs
這將無法以您嘗試的方式起作用。
如果在接收端需要特定的屬性,則可以:
我想這取決於您的具體情況,這是最好的。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.