小编Tom*_*Tom的帖子

Cosmos db 按“计算字段”排序

我正在尝试根据字符串状态选择数据。我想要的是状态“草稿”首先出现,所以我尝试了以下方法:

SELECT * 
FROM c 
ORDER BY c.status = "draft" ? 0:1
Run Code Online (Sandbox Code Playgroud)

我收到错误:

不支持 ORDER BY 子句。ORDER BY 项目表达式无法映射到文档路径

我检查了微软网站,我看到了这个:

ORDER BY 子句要求索引策略包含正在排序的字段的索引。Azure Cosmos DB 查询运行时支持根据属性名称排序,而不是根据计算属性排序。

我想这使得我想要通过查询做的事情变得不可能......我怎样才能实现这一目标?使用存储过程?

编辑

关于存储过程:实际上,我只是在考虑这个,这意味着,我需要在订购之前检索所有数据,这会很糟糕,因为我从数据库中获取最大 100 值...有什么办法可以做到这一点所以我不必先检索所有数据?谢谢

谢谢!

azure-cosmosdb

6
推荐指数
1
解决办法
3775
查看次数

MVC 4 Ajax.Action链接无法正常工作

我正在尝试使用Ajax调用创建一个MVC网站.我没有直接使用jquery的问题,但是当我使用@ Ajax.ActionLink时,我没有得到我想要的结果.这是我的观点:

    <script type="text/javascript">
        function deleteComment(id) {
            $.post(
                "/Role/AjaxTest",
                //{ id: id }, 

                function (data) {
                    $("#testtarget").html(data);               
                });
         }
    </script>


    <script src="@Url.Content("~/Scripts/jquery.unobtrusive-ajax.min.js")" type="text/javascript"></script>
    <h2>TITLE</h2>
    <p>
 @Ajax.ActionLink("Ajax Test", "AjaxTest", "Role", new AjaxOptions{UpdateTargetId="testtarget",HttpMethod = "Get" , InsertionMode = InsertionMode.Replace }) 
    </p>
    <table>    
    @foreach (var item in Model) {
        <tr>
            <td>
                @Html.DisplayFor(modelItem => item.RoleName)
            </td>
            <td>
              <a onclick="deleteComment('@item.RoleId'); return false;" href="#">Delete</a>
                @Html.ActionLink("Delete", "Delete", new { id=item.RoleId })

            </td>
        </tr>
    }
    </table>
    <div id="testtarget">Test Div</div>
Run Code Online (Sandbox Code Playgroud)

这是我的Controler数据:

public string AjaxTest()
{
    return "Some random text"; …
Run Code Online (Sandbox Code Playgroud)

c# asp.net-ajax html.actionlink razor asp.net-mvc-4

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

实体框架代码优先:从具有鉴别器的表中选择数据

首先对不起,如果我的标题不清楚,但我确实很难用英文简单的句子:).

假设我有一个管理网站,人和超级英雄,我有2个班:

 public class Person
    {      
        [Key]
        public int PersonId { get; set; }

        [MaxLength(100)]
        public string Name { get; set; }    
    }

  public class SuperHero:Person
    {    
        [MaxLength(100)]
        public string SuperHeroName { get; set; }
        public virtual ICollection<SuperPower> SuperPowers{ get; set; }
    }
Run Code Online (Sandbox Code Playgroud)

在我的数据库中,我有这个:

人1:Id = 1姓名="Alex Flimster"Discrimiator ="人"

人2:ID = 2姓名="布鲁斯韦恩"鉴别器="SuperHero"SuperHeroName ="蝙蝠侠"

我知道如果我这样做:

var test = from Context.Person select p;
Run Code Online (Sandbox Code Playgroud)

我得到每个人,英雄与否.

如果我只想要英雄,我会这样做:

var test = from Context.Person.OfType<SuperHero>() select p;
Run Code Online (Sandbox Code Playgroud)

我的问题是:我如何只得到这个人?

var test = from Context.Person.OfType<Person>() select p; 
Run Code Online (Sandbox Code Playgroud)

将返回与第一次测试相同的返回.

编辑 …

.net entity-framework ef-code-first

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