我正在将我们的WCF Web服务迁移到ServiceStack。我们有3个实体。让他们成为A,B和C.
在WCF中,我们将有3种方法与他的孩子一起获得A:
public List<A> GetAWithBIncluded()
{
return Repository.A.Include("B").ToList();
}
public List<A> GetAWithCIncluded()
{
return Repository.A.Include("C").ToList();
}
public List<A> GetAWithBAndCIncluded()
{
return Repository.A.Include("B").Include("C").ToList();
}
我很难将此过程转换为ServiceStack方式。你们能提供一些例子吗?
我想出的最好的是:
public class AResponse
{
public List<A> As {get;set;}
....//One list of each type.
}
我们知道我们不能在延迟加载时使用WCF,但是ServiceStack和ormlite可以完全自动化数据访问过程,而不会对应用程序过度收费吗?
答案 0 :(得分:2)
如果您正在使用EF,我可能会这样做:
[Route("/a")]
public class GetAs : IReturn<List<A>>
{
public bool IncludeB { get; set; }
public bool IncludeC { get; set; }
}
public class AService : Service
{
private readonly AContext _aContext;
public AService(AContext aContext)
{
_aContext = aContext;
}
public object Get(GetAs req)
{
var res = _aContext.As;
if (req.IncludeB)
res = res.Include("B");
if (req.IncludeC)
res = res.Include("C");
return res.ToList();
}
}