小编Chr*_*ris的帖子

SQL中的GROUP BY /聚合函数混淆

我需要一些帮助来理顺一些东西,我知道这是一个非常容易的简单问题,但它在SQL中稍微让我感到困惑.

此SQL查询在Oracle中引发"非GROUP BY表达式"错误.我理解为什么,正如我所知,一旦我按元组的属性进行分组,我就再也无法访问任何其他属性了.

SELECT * 
FROM order_details 
GROUP BY order_no
Run Code Online (Sandbox Code Playgroud)

不过这个确实有效

SELECT SUM(order_price)
FROM order_details
GROUP BY order_no
Run Code Online (Sandbox Code Playgroud)

只是具体我对此的理解....假设每个订单的order_details中有多个元组,一旦我按照order_no对元组进行分组,我仍然可以访问组中每个元组的order_price属性,但只使用聚合函数?

换句话说,在SELECT子句中使用的聚合函数能够深入到组中以查看"隐藏"属性,其中简单地使用"SELECT order_no"会抛出错误?

sql oracle

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

使用malloc动态创建字符串数组

我正在尝试使用C创建一个字符串数组malloc.数组将保留的字符串数可以在运行时更改,但字符串的长度将始终保持一致.

我试过这个(见下文),但是遇到了麻烦,我们非常感谢任何正确方向的提示!

#define ID_LEN 5
char *orderedIds;
int i;
int variableNumberOfElements = 5; /* Hard coded here */

orderedIds = malloc(variableNumberOfElements * (ID_LEN + 1));
Run Code Online (Sandbox Code Playgroud)

最终我希望能够使用数组来执行此操作:

strcpy(orderedIds[0], string1);
strcpy(orderedIds[1], string2);
/* etc */
Run Code Online (Sandbox Code Playgroud)

c arrays malloc

36
推荐指数
3
解决办法
12万
查看次数

指针在printf()中不起作用

打印指针时遇到问题.每次我尝试编译下面的程序时,我都会收到以下错误:

pointers.c:11: warning: format ‘%p’ expects type ‘void *’, but argument 2 has type ‘int *’
Run Code Online (Sandbox Code Playgroud)

我显然在这里遗漏了一些简单的东西,但是从我见过的类似代码的其他考试中,这应该是有效的.

这是代码,任何帮助都会很棒!

#include <stdio.h>

    int main(void)
    {
       int x = 99;
       int *pt1;

       pt1 = &x;

       printf("Value at p1: %d\n", *pt1);
       printf("Address of p1: %p\n", pt1);

       return 0;
    }
Run Code Online (Sandbox Code Playgroud)

c printf pointers

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

System.Addin - 创建安全的ASP.NET MVC插件

最近我的重点是创建一个可以托管第三方MVC插件的ASP.NET MVC应用程序.理想情况下,这些插件的开发将遵循以下规则:

  1. 插件可以在标准MVC项目中开发,并且能够使用ASP.NET MVC框架的所有现有基础结构.
  2. 编译插件MVC项目并包含到主机MVC应用程序中的复杂性不应该很严重.
  3. 对MVC应用程序的正常开发流程的任何更改都将是最小值

经过一番研究后,我想出了以下几种方法来实现这一点,每种方法各有优缺点.

方法1 - 将MVC插件程序集加载到主MVC AppDomain中

工作流程

  • 在单独的MVC项目中开发插件.
  • 编译组件和它和任何依赖关系加载到经由所述主机应用程序PreApplicationStartMethodAttribute,MEF或主机项目中的基本组件参考(如果可能).
  • 将路由映射到插件控制器,以便将插件视为Area主机内的插件.
  • 将插件视图放入正确的区域文件夹中.需要更改布局文件,以便布局路径指向基于区域的位置,而不是应用程序的根(在开发MVC项目中就是这种情况)
  • 当插件的请求进入时,ASP.NET将使用现有区域功能将请求路由到正确的控制器并查看视图文件的正确位置.

好处

  1. 将无缝地工作,就好像控制器嵌入在主机MVC应用程序组件中一样.
  2. 在应用程序启动(PreApplicationStartMethodAttribute,项目引用)之前和应用程序启动之后(MEF),将程序集包含到主机App Domain中很简单

缺点

  1. 没有沙盒 - 控制器将具有与主机相同的信任级别.

结论

这是最简单的方法,但它也是最不安全的方法.它基本上消除了允许不受信任的开发人员创建插件的可能性,因为这些插件将具有与宿主应用程序相同的信任级别(这意味着如果宿主应用程序可以执行诸如System.IO.File.Delete插件之类的方法)

方法2 - 通过MAF在自己的AppDomain中运行的MVC插件程序集

这种方法旨在允许创建可以沙箱化为自己的MVC插件,AppDomains并由主机通过System.Addin库使用.

结构体

  1. 在主机中设置路由,以确定正在处理的URL是否针对插件.可能有这样的模式example.com/p/{plugin}/{controller}/{action}/{id}

  2. 具有上述模式的所有路由都映射到具有模块路由操作的主机控制器.该操作会查看任何给定的路由,并根据段确定处理请求的相应插件{plugin}.

  3. 插件视图是一个接收器/发送器对象,充当插件控制器的网关.它有一个名为AcceptRequest的方法,它RequestContext从主机接收a ,并返回一个ActionResult.

  4. 插件管道包含可以串行化RequestContextActionResult跨管道隔离边界传输的适配器.

执行流程

  1. 匹配插件的路由并调用插件路由控制器.

  2. 控制器将所需的插件加载到它自己的插件中AppDomain并调用AcceptRequest,通过RequestContext(通过管道序列化)

  3. AcceptRequest接收上下文并根据该请求确定要执行的适当控制器(使用自定义控制器工厂).

  4. 一旦控制器完成执行请求,它就会ActionResult向接收器对象返回一个接收器对象,然后将该接收器对象 …

asp.net asp.net-mvc plugins appdomain

25
推荐指数
1
解决办法
1792
查看次数

ASP.NET MVC - 无法绑定数组以查看模型

我有一个带有from的视图模型,其中包含一组复选框.在我的控制器的post back方法中绑定时,我需要复选框映射到数组.

这是视图模型.

@model TMDM.Models.TestSeriesCreateViewModel

@{
    ViewBag.Title = "Create";
}

<h2>Create a Test Series</h2>


@using (Html.BeginForm()) {
    @Html.ValidationSummary(true)
    <fieldset>

        <div class="editor-label">
            @Html.LabelFor(model => model.Title)
        </div>
        <div class="editor-field">
            @Html.EditorFor(model => model.Title)
            @Html.ValidationMessageFor(model => model.Title)
        </div>

        <h3>Which Test Collections are in this Test Series?</h3>
        <div class="editor-field">
        @{
            var i = 0;
            foreach (var testCollection in Model.TestCollections)
            {
                <input type="checkbox" id="ChosenTestCollectionIds[@i]" name="ChosenTestCollectionIds[@i]" value="@testCollection.Id" />
                <span>@testCollection.Title</span>
                <br />
                i++;
            }
         }
        </div>

        <p>
            <input type="submit" value="Save" class="medium green awesome" />
            @Html.ActionLink("Cancel", "Index", "TestSeries", null, …
Run Code Online (Sandbox Code Playgroud)

asp.net-mvc razor

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

如何在xUnit.net测试中仅运行一次安装代码

我正在尝试使用Xunit设置我的测试.我要求删除测试文件夹开头的所有图像,然后每个方法都会调整一些图像大小,并将其输出的副本保存到文件夹中.该文件夹应该只清空一次,然后每个方法将自己的图像保存到该文件夹​​中.

当我使用时IUseFixture<T>,ClearVisualTestResultFolder在每次测试之前仍然会调用该函数,所以我最终只在文件夹中有一个图像.

public class Fixture
{
    public void Setup()
    {
        ImageHelperTest.ClearVisualTestResultFolder();
    }
}

public class ImageHelperTest : IUseFixture<EngDev.Test.Fixture>
{
    public void SetFixture(EngDev.Test.Fixture data)
    {
        data.Setup();
    }

    public static void ClearVisualTestResultFolder()
    {
        // Logic to clear folder
    }
}
Run Code Online (Sandbox Code Playgroud)

如果我把ClearVisualTestResultFolder它放在构造函数中,它也会为每个测试方法调用一次.我需要在执行所有测试方法之前运行一次,我该如何实现?

如果重要,我使用ReSharper测试运行器.

c# asp.net xunit xunit.net

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

srand(time(NULL))不会足够快地更改种子值

我在C中编写了一个简单的随机数生成器,int l它是下限,int u是上限.

它运作得很好,但我有一个关于播种它的问题.如果我在循环中运行它,time(NULL)不会足够快地更改种子值,以防止获得完全相同的连续系列随机数.

我想知道其他人怎么可能解决这个问题.我在网上找到的所有例子都time(NULL)用作种子值生成器.

int generateRandom(int l, int u)
{
   srand(time(NULL));

   int r = rand() % ((u - l) + 1);
   r = l + r;

   return r;
}
Run Code Online (Sandbox Code Playgroud)

如果我是紧挨着彼此碰撞的几行代码,无论是Rand1Rand2是完全一样的.

printf("Rand1 = %d\n", generateRandom(10, 46));
printf("Rand2 = %d\n", generateRandom(10, 46));
Run Code Online (Sandbox Code Playgroud)

c

19
推荐指数
4
解决办法
6万
查看次数

JsonSerializer - 使用'N2'格式序列化小数位

我正在使用Newtonsoft.Json.JsonSerializer序列化小数.

如何将其设置为序列化十进制数,只有1位小数,最后使用0.

即3.5序列化为"3.50"?

asp.net-mvc jsonserializer json.net asp.net-mvc-4

12
推荐指数
2
解决办法
9965
查看次数

ASP.NET MVC Model Binder返回null对象

我遇到一个问题,每次我将表单发回到[HttpPost]我的控制器动作版本时,ModelBinder都会返回一个null对象.我无法理解为什么.如果我更改签名以使用FormCollection替代,我可以看到已经设置了所有正确的密钥.有人可以帮我指出这里有什么问题,因为我无法发现它.

以下是处理我的观点的模型

public class DeviceModel
{
    public int Id { get; set; }

    [Required]
    [Display(Name = "Manufacturer")]
    public int ManufacturerId { get; set; }

    [Required]
    [Display(Name = "Model")]
    [StringLength(20)]
    public string Model { get; set; }

    [StringLength(50)]
    [Display(Name = "Name")]
    public string Name { get; set; }

    [StringLength(50)]
    [Display(Name = "CodeName")]
    public string CodeName { get; set; }

    public int? ImageId { get; set; }
}

public class DeviceCreateViewModel : DeviceModel
{
    public IEnumerable<SelectListItem> Manufacturers { …
Run Code Online (Sandbox Code Playgroud)

asp.net model-binding asp.net-mvc-3

11
推荐指数
1
解决办法
8716
查看次数

可以浏览DataAnnotations的自定义Html帮助程序

说我有这样的模特

public class User
{
    [Required]
    [StringLength(14, ErrorMessage = "Can only be 14 characters long")]
    public string UserName;

}
Run Code Online (Sandbox Code Playgroud)

我想创建一个这样的Html帮助器:

@Html.ValidatableEditorFor(m => m.UserName)
Run Code Online (Sandbox Code Playgroud)

这样它就会向jQuery Vaidation插件发出一个正确格式的文本字段,以便能够验证,如下所示:

   <input type="text" class="required" maxlength="14" />
Run Code Online (Sandbox Code Playgroud)

根据我的研究,似乎没有办法迭代MetaDataModel中的所有数据注释,以便我可以检查哪一个适用于jQuery验证.

我如何设想它在伪代码中工作:

    var tag = new TagBuilder("input");
    tag.mergeAttribute("type", "text");
    foreach(var attribute in metadata.attributes)
    {
       CheckForValidatableAttribute(attribute, tag);
    }

...
    private void CheckForValidatableAttribute(DataAnnotation attribute, TagBuilder tag)
    {
        switch(attribute.type)
       {
          case Required:
             tag.addClass("required");
             break;
          case StringLength
             tag.mergeAttribute("maxlength", attribute.value)
             break;
       }
    }
Run Code Online (Sandbox Code Playgroud)

我怎么能去实现这样的帮助呢?我希望它能够处理数据注释,这样我就不必复制验证文字了.

例如,像TextEditorFor这样的当前Html帮助程序会将可验证的属性附加到其输出字段.它是如何做到的,我如何实现自己的实现?

干杯

asp.net-mvc modelmetadata data-annotations

11
推荐指数
1
解决办法
2856
查看次数