小编Jua*_*DYB的帖子

使用lambda表达式的多个左外连接

我有一个SQL查询与这样的Lambda表达式,通常有比这个例子更多的连接.

select Table2.a,
          Table2.b,
          Table2.c,
          Table2.d
   from Table1
     LEFT OUTER JOIN Table2
     ON Table2.a = Table1.a and
        Table2.b = Table1.b and
        Table2.c = Table1.c 
     LEFT OUTER JOIN Table3
     ON Table3.b = Table1.b AND
        Table3.c = Table1.c AND
        Table3.d = Table1.d 
   where ( Table1.a = ValueA )
   order by Table3.f
Run Code Online (Sandbox Code Playgroud)

我正在使用Join()Lambda Expression执行此操作,但我在SQL Server分析器中看到,这会生成一个INNER JOIN,我需要一个LEFT OUTER JOIN.

这是我用Join()做的

var RS = DBContext.Table1.Join(DBContext.Table2,
  Table1 => new {Table1.a, Table1.b, Table1.c},
  Table2 => new {Table1.a, Table1.b, Table1.c},
  (Table1, Table2) => new {Table1})
.Join(DBContext.Table3,
  LastJoin => …
Run Code Online (Sandbox Code Playgroud)

c# sql sql-server lambda entity-framework

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

实体框架代码First MaxLength和FixedLegth(char vs varchar)

我有一个实体框架CodeFirst模型,我从现有的数据库创建,我想使用DataAnnotations以不同的方式装饰一些char和varchar.

char和varchar之间的区别在于Char具有固定长度并且varchar具有可变长度.

对于Varchar我正在使用[Maxlength(length)]对于char这是正确的方法还是有更好的方法来定义类中的字符串属性被映射为数据库中的char?

c# mysql code-first entity-framework-6

4
推荐指数
1
解决办法
6636
查看次数

jquery metismenu无法使用AngularJS控制器加载数据异步

我有Jquerymetis菜单的问题.我想从Database加载菜单元素,我正在使用AngujarJS控制器来获取带有菜单元素的JSON.

这是AngularJSController

var appControllers = angular.module('appControllers', []);

appControllers.controller('MenuCtrl', ['$scope', '$http',
  function ($scope, $http) {
      var url = "/api/Menus/GetMenuElements";
      $http.post(url).
        success(function (data, status, headers, config) {
            $scope.menuElements = data;
            console.log("Success");
        }).
        error(function (data, status, headers, config) {
            console.log("Error");
        });
  }]);
Run Code Online (Sandbox Code Playgroud)

然后在我的ASP.NET MVC项目的PartialView中,我有Angular指令将元素添加到菜单中.

<ul class="nav" id="side-menu">
    <li ng-repeat="elementL1 in menuElements" ng-init="menuElements != null">
        <a ng-if="elementL1.LINK !== null" href="{{elementL1.LINK}}"><i class="fa fa-home"></i> <span class="nav-label">{{elementL1.NAME}}</span><span class="fa arrow"></span></a>
        <a ng-if="elementL1.LINK == null"><i class="fa fa-home"></i> <span class="nav-label">{{elementL1.NAME}}</span> </a>

        <ul ng-repeat="elementL2 in elementL1.ChildMenu" ng-if="elementL1.ChildMenu.length > 0" class="nav nav-second-level"> …
Run Code Online (Sandbox Code Playgroud)

javascript asp.net-mvc jquery angularjs

4
推荐指数
1
解决办法
3802
查看次数

Primefaces 消息用于验证,其余部分则咆哮

我有一个带有 primefaces 的 JSF 页面,我想使用 p:messages 作为输入验证的消息,并使用 Growl 元素来处理其余的内容,例如通知、错误......

\n\n

目前,我有一个带有属性的咆哮,并且我正在使用此属性发送通知。

\n\n

问题是我不知道必须将哪个属性放入 p:messages 组件中。如果我将其保留为空,则通知消息将显示在 Growl 和 p:messages 中。

\n\n

在这里您可以看到我的 JSF 示例。

\n\n
<p:growl id="growlNotifyNewReg" for="growlNotificationsNewRegister"\n                         showSummary="true" \n                         showDetail="true"\n                         autoUpdate="true"/>\n\n<h:outputText value="Validado"/>\n<p:selectBooleanCheckbox id="checkValidado" value="#{}" required="true"/>\n\n<h:outputText value="Temperatura (\xc2\xbaC)"/>\n<p:inputText id="Temperatura" value="#{}" required="true">\n      <f:validateDoubleRange minimum="-50" maximum="60" />\n      <f:convertNumber maxFractionDigits="1" />\n</p:inputText>\n\n<!-- Other inputs... -->\n\n<p:messages showSummary="true" showDetail="true" redisplay="false"/>\n
Run Code Online (Sandbox Code Playgroud)\n\n

当我想发送通知时,我喜欢这样。

\n\n
FacesMessage facesMsg = new FacesMessage(FacesMessage.SEVERITY_INFO, "summary", "details");\nFacesContext.getCurrentInstance().addMessage("growlNotificationsNewRegister", facesMsg);\n
Run Code Online (Sandbox Code Playgroud)\n\n

此代码将消息发送到 Growl 组件,同时也发送到 messages 组件,因为它没有 for 属性。我想知道必须在消息组件中放入哪个属性才能仅显示表单的验证消息。

\n\n

正如你所看到的,我将 redisplay 属性设置为 false。我可以在 p:messages 的 for …

jsf primefaces jsf-2

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

实体框架非静态方法需要一个目标.Lambda中的空值

我在使用Lambda表达式的实体框架中遇到问题,其对象可以为null.我正在执行查询以通过某些字段在我的数据库中进行搜索,字段是可选的,如果字段为空,我不会将它用于查询中的条件,如果字段不为空,我在查询中使用它.

为此,我试图做这样的事情.

//Can be null or not
DateTime? date;

//This thorows an Exception "Non Static method needs a target"
List <> data = db.T_USER.Where(U =>
    (date == null || U.JoinDate == date)
).ToList();
Run Code Online (Sandbox Code Playgroud)

此代码抛出一个异常"非静态方法需要一个目标"

在这里搜索解决方案我发现查询中存在null值的问题,所以我尝试这样做.但即使第二部分的OR永远不会被评估,它也没有用,因为第一部分是真的.

bool DateIsNull = (date == null);

//This thorows an Exception "Non Static method needs a target"
List <> data = db.T_USER.Where(U =>
    (DateIsNull || U.JoinDate == date)
).ToList();
Run Code Online (Sandbox Code Playgroud)

我的最终解决方案是这个并且它有效.但我觉得这段代码很难看.想象一下这个5个可选字段或更多字段的愚蠢代码......

//Can be null or not
DateTime? date;

bool DateIsNull = (date == null);
DateTime _filterDate = …
Run Code Online (Sandbox Code Playgroud)

c# linq lambda entity-framework

2
推荐指数
1
解决办法
170
查看次数

C#是可空的int可空小数的后代

我错误地发现了令我惊讶的事情.

我有这个方法

public static string PrintDecimal(decimal? input, string NumberFormat = null){ }
Run Code Online (Sandbox Code Playgroud)

我把这种方法称为这样

int? MaxFaltas = 0;
Label.Text = CustomConvert.PrintDecimal(MaxFaltas);
Run Code Online (Sandbox Code Playgroud)

为什么这是有效的,没有编译错误.我正在调用一个定义为接收a decimal?的方法int?

c# nullable decimal

2
推荐指数
1
解决办法
453
查看次数

Jquery 会话超时后立即重定向

我在 ASP.NET MVC 中有一个 Web,我想在会话超时后自动重定向到登录页面,而无需用户干预。例如像 Gmail 那样。

现在我正在对控制器进行 ajax 调用,以 5 秒的间隔检查会话。

[HttpPost]
        public JsonResult CheckSession(string currentUrl)
        {
            bool result = false;
            Uri url = new Uri(currentUrl);
            if (PublicUrl.Contains(url.AbsolutePath))
            {
                result = true;
            }
            else
            {
                result = HttpContext.User.Identity.IsAuthenticated;
            }
            return Json(result);
        }
Run Code Online (Sandbox Code Playgroud)

如果结果为 false,我会在 JQuery 上进行重定向。

如果我手动删除浏览器上的 cookie,这会很有效。但问题是会话永远不会过期,因为我每 5 秒对服务器进行一次调用,因此会话超时会在每次服务器端调用时重置。

如何在会话到期时自动重定向?

asp.net ajax asp.net-mvc session jquery

0
推荐指数
1
解决办法
5806
查看次数

WPF 调用异步方法的结果导致阻塞

我有一个使用 Prism 的 WPF 应用程序,并且我发现异步方法存在额外行为。

我有一个带有这样的异步方法的类

public class ConfigurationManager(){
    public async Task<IList<T>> LoadConfigurationAsync<T>(){
        Tuple<IList<T>, bool> tuple = await LoadConfigurationItemsAsync();
        return tuple.Item1;
    }

    private async Task<Tuple<IList<T>, bool>> LoadConfigurationItemsAsync<T>(){
        await Task.Run(()  => 
        {

        });
        return new Tuple<IList<T>, bool>(configList.list, succes);
    }
}
Run Code Online (Sandbox Code Playgroud)

我需要以同步形式调用它们,因为我需要 ViewModelManager 的构造函数中的结果,并且我尝试使用 Result,因为这是以同步方式获取结果的方法之一。

public class ViewModelManager{
    private readonly ConfigurationManager _configManager;

    private void LoadConfiguration(){
        var config = _configManager.LoadConfigurationAsync().Result;
    }
}
Run Code Online (Sandbox Code Playgroud)

令我惊讶的是,这导致应用程序在 Result 调用中被阻止,我知道 Result 被阻止,但并非总是如此,方法的返回行永远不会被执行。我尝试使用它来调用它Task.Run并且它有效

private void LoadConfiguration(){
    var config = Task.Run(() => _configManager.LoadConfigurationAsync()).Result;
}
Run Code Online (Sandbox Code Playgroud)

我不知道这里发生了什么,也不知道为什么调用结果会导致应用程序被阻止以及为什么使用Task.Run它有效。这就像调用两个任务,因为该方法已经返回一个Task …

c# wpf prism async-await

0
推荐指数
1
解决办法
477
查看次数