小编And*_*eas的帖子

是否有可能查询Odata服务并扩展Child of Child实体?

这听起来很简单(也许我错过了这里显而易见的)但我找不到解决方案.我知道我可以查询实体并返回一个或多个直接子实体执行此操作:

var query = from c in Service.Clients.Expand("Addresses,Comments,PhoneNumbers")..
Run Code Online (Sandbox Code Playgroud)

我想能做的是做3个等级(孩子的孩子),让我们说"国家 - >省 - >城市"或"品牌 - >家庭 - >模型"

我试图扩展所有实体,但它失败了

var query = from c in Service.Brands.Expand("Families,Models").. //fails,
//which even makes some sense, since Models is a Child of Family, not Brand
var query = from c in Service.Brands.Expand("Families").. //this works, 
//but Family.Models is empty
Run Code Online (Sandbox Code Playgroud)

有没有办法在一个查询中执行此操作,还是必须在两个单独的查询中拆分它?

linq wcf-data-services odata

21
推荐指数
2
解决办法
2万
查看次数

如何创建动态“包含或类似”表达式以与Linq针对OData服务一起使用

我尝试使用System.Linq.Expressions.Expression(WPF / c#4.0)创建一个动态查询工具,该工具针对OData服务运行。

到目前为止,只要我限制建立条件的条件(如Equal(..),GreaterThan(..)等),一切就可以正常工作。contains/ Like条件似乎没有任何构建,因此我尝试构建自己的条件。已经有一些文章了。我尝试过的一个方法是如何为Like创建System.Linq.Expressions.Expression?

现在,如果我使用上述解决方案,则结果为

whereCallExpression = {Convert([10000]).Expand("A,B").Where(clt => MyLike(clt.LastName, "te"))}'
Run Code Online (Sandbox Code Playgroud)

很好,但是错误,因为它不会转换为有效的Odata查询。

如果我使用条件“等于”,则结果为

whereCallExpression = {Convert([10000]).Expand("A,B").Where(clt => (clt.LastName == "te"))}
Run Code Online (Sandbox Code Playgroud)

这导致OData查询

results = {http://.../Clients()?$filter=LastName eq 'te'&$expand=A,B} 
Run Code Online (Sandbox Code Playgroud)

并按预期工作。

我在解决方案的实现方面做错了,还是不能与OData一起使用?

它应该转移到类似 ...?$filter=substringof('te', LastName ) eq true

关于如何解决此问题的任何解决方案?

问候

安德烈亚斯

PS,我在静态类中实现了解决方案扩展,我所更改的只是被调用方法的名称,从“ Like”更改为“ MyLike”。此外,由于用于构建表达式的代码可与任何内置条件一起使用,我认为,现在这部分还可以。如果需要,我可以将其中的一部分张贴

c# linq expression-trees odata

5
推荐指数
1
解决办法
8376
查看次数

Roles.IsUserInRole()使用wsHttpBinding和MVC 4无法在WCF中工作

我有以下测试设置,所有工作:

-WCF应用程序运行MathService.svc,设置为使用SimpleMembershipProvider

-MVC 4 Internet App使用默认的SimpleMembershipProvider

- 会员资格是:

  • 3角色:'调试','管理员'和'编辑'
  • 2用户:角色调试和管理员中的"调试"(ya,角色调试中的用户调试)
  • 角色管理员中的"管理员"

- 证书,据我所知,我可以使用wshttp连接到服务

服务方法代码.

//[PrincipalPermission(SecurityAction.Demand, Role = "Debug")]
public string Add(double A, double B)
{
    OperationContext oc = OperationContext.Current;
    ServiceSecurityContext ssc = oc.ServiceSecurityContext;
    string cltName = ssc.PrimaryIdentity.Name;   //cltName = "Debug"
    var Rs = Roles.GetAllRoles(); //returns: 'Debug', 'Administrator', 'Editor' => OK
    var dUsers = Roles.GetUsersInRole("Debug");  // 'Debug' => Expected
    var aUsers = Roles.GetUsersInRole("Administrator"); // 'Debug', 'Admin' => expected
    try
    {
        var a = Roles.GetRolesForUser(cltName); //this fails 
        var b = Roles.IsUserInRole(cltName, "Debug"); …
Run Code Online (Sandbox Code Playgroud)

wcf roles wshttpbinding simplemembership

5
推荐指数
1
解决办法
1493
查看次数