Automapper有一个非常好的扩展来获取预测 在我们的应用程序的BL中,我们可以定义这样的方法:
IEnumerable<TEntityProjection> GetProjections()
{
return _context.EntitiesSet.Project().To<TEntityProjection>();
}
这有助于BL保持简单。对于每个投影变体,我们不需要很多不同的方法 但是...... WCF服务不支持开放式泛型 所以我正在寻找允许服务客户端只获得实体所需属性的解决方案。
答案 0 :(得分:2)
可能的解决方案是Linq over WCF(基于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
答案 1 :(得分:1)
这不会影响您尝试的方式。
如果您需要接收端的特定属性,您可以:
我认为这取决于你最好的案例细节。