小编Sha*_*ica的帖子

LinqToSql查询中的条件快捷方式

这里有一点LinqToSql GOTCHA:

// Returns the number of counties in a state, 
// or all counties in the USA if the state is null
public static int CountCounties(State s) {
  var q = 
    from cy in County.GetTable() // my method to get the ITable
    where (s == null || s.Code == cy.StateCode) // shortcut OR operator, right...?
    select cy;
  return q.Count();
}
Run Code Online (Sandbox Code Playgroud)

猜猜看 - 如果你将null State对象传递给这个方法,你会得到一个空引用异常!似乎LinqToSql不使用||快捷操作符作为快捷方式!

答案可归功于为此提出最佳解释和解决方法的人.

c# linq linq-to-sql

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

优化对许多外键引用的表的删除

我有一个表Document,由大量其他表通过外键引用.我正在尝试删除文档记录,并根据我的执行计划,SQL Server正在对每个引用表执行聚簇索引扫描.这非常痛苦.

我以为让FK自动在FK字段上做一个索引?还是我错了?我是否真的必须绕过我的数据库,在每个FK字段上放置一个显式索引?

sql-server sql-server-2005 foreign-keys

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

如何让Visual Studio开发服务器与PHP一起使用?

我是一名.NET专家,与PHP/Flash程序员合作,通过IIS提供应用程序.在一场可怕的战斗中跳过了17次篝火并击败了石像鬼,我设法让我的IIS 7.5服务器与PHP合作,现在如果你浏览我的公共网站,你可以愉快地看到Flash对象无论可能是什么,用PHP做他们的幕后工作.

但是......当我使用VS开发服务器调试我的应用程序时,显然仍然不知道如何应对PHP:我得到了与IIS相同的HTTP 405(方法不允许)错误在前面提到的gargoyle呼吸它的最后一个("用于访问路径的HTTP动词POST'/php/blah.php'是不允许的.").

那么,你需要做些什么来让VS Dev服务器与PHP一起玩呢?

php asp.net iis visual-studio-2010

5
推荐指数
2
解决办法
3867
查看次数

Java vs .NET中的DES加密 - 为什么不同?

我有一个.NET方法,用于对字符串进行DES加密:

public static string EncryptTripleDES(string value, byte[] encryptionKey, byte[] initializationVector) {
  if (!value.IsNullOrEmpty()) {
    TripleDESCryptoServiceProvider cryptoProvider = new TripleDESCryptoServiceProvider();
    MemoryStream ms = new MemoryStream();
    CryptoStream cs = new CryptoStream(ms, cryptoProvider.CreateEncryptor(encryptionKey, initializationVector), CryptoStreamMode.Write);
    StreamWriter sw = new StreamWriter(cs);
    sw.Write(value);
    sw.Flush();
    cs.FlushFinalBlock();
    ms.Flush();
    //convert back to a string
    return Convert.ToBase64String(ms.GetBuffer(), 0, (int)ms.Length);
  } else {
    return "";
  }
}
Run Code Online (Sandbox Code Playgroud)

如您所见,该算法采用2个参数 - "加密密钥"和"初始化向量".

现在我需要用Java编写DES加密/解密函数,与此函数并行,这样如果你提供相同的加密密钥和初始化向量,你将能够用Java解密用C#加密的东西.(关于Java工作服,自上次使用Java以来​​大约10年的时间,以及Java中用于DES加密的Googles ......)

在这里找到了一个不错的Java DES加密方法.但是 - 哦,亲爱的,事实证明这个算法坚持一个正好8个字节的初始化向量; .NET代码使用24字节的init向量!

怎么办?为什么Java坚持使用8字节的init向量?我如何解密使用24字节初始向量加密的内容?

c# java encryption cryptography

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

如何在Linq中创建复合"或"子句?

如果你在Linq查询中添加"和"条件,那么很容易就这样做:

var q = MyTable;
if (condition1)
  q = q.Where(t => t.Field1 == value1);
if (condition2)
  q = q.Where(t => t.Field2 > t.Field3);
// etc.
Run Code Online (Sandbox Code Playgroud)

当你想添加"或"条件时,有没有聪明的方法做同样的事情?

c# linq

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

将Linq2Sql对象传递给Views有什么问题?

之前的一个问题中,@ Darin Dimitrov 回答说:

在你的情况下,最糟糕的是你在你的视图中使用你的Linq2Sql模型,这是我看到人们在ASP.NET MVC应用程序中做的最糟糕的反模式之一.你绝对应该使用视图模型.这就是应该从控制器传递的视图,这是控制器应该从视图中获取的内容.

为什么将Linq2Sql对象作为模型传递是如此糟糕?

asp.net-mvc

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

java.lang.NoSuchMethodError,两个类在同一个JAR中!

我的Java技能有点生疏,但这真的很奇怪:我java.lang.NoSuchMethodError在运行时调用另一个类中的方法 - 请注意代码编译正常 - 另一个类包含在与调用方法相同的JAR中!

这似乎表明它不是类路径问题 - 但那又是什么?

java classloader

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

IsAuthenticated适用于浏览器 - 但不适用于Air客户端!

验证后我的登录代码:

var authTicket = new FormsAuthenticationTicket(
                1,
                userName,
                DateTime.Now,
                DateTime.Now.AddMinutes(20), // expiry
                false,
                roles,
                "/");
var cookie = new HttpCookie(FormsAuthentication.FormsCookieName, FormsAuthentication.Encrypt(authTicket));
Response.Cookies.Add(cookie);
Run Code Online (Sandbox Code Playgroud)

并且,感谢Darin Dimitrov,我有一个自定义的Authorize属性:

[AttributeUsage(AttributeTargets.Method | AttributeTargets.Class, Inherited = true, AllowMultiple = true)]
public class TJAuthorize : AuthorizeAttribute {
    public override void OnAuthorization(AuthorizationContext filterContext) {
        string cookieName = FormsAuthentication.FormsCookieName;

        if (!filterContext.HttpContext.User.Identity.IsAuthenticated ||
                filterContext.HttpContext.Request.Cookies == null || filterContext.HttpContext.Request.Cookies[cookieName] == null) {
                    HandleUnauthorizedRequest(filterContext);
            return;
        }

        var authCookie = filterContext.HttpContext.Request.Cookies[cookieName];
        var authTicket = FormsAuthentication.Decrypt(authCookie.Value);
        string[] roles = authTicket.UserData.Split(',');

        var userIdentity = …
Run Code Online (Sandbox Code Playgroud)

air asp.net asp.net-mvc

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

存储过程性能 - 这是WILD?

这个问题并不是要找到一个解决方案,而是要解释我从SQL Server中看到过的奇怪行为.

我有一个带有以下签名的存储过程:

alter procedure MySP @param1 uniqueidentifier, 
                     @param2 uniqueidentifier, 
                     @param3 uniqueidentifier
Run Code Online (Sandbox Code Playgroud)

给定一组参数,这个过程需要很长时间才能从C#(使用SqlCommand.ExecuteReader())运行 - 大约2分钟.在直接查询会话中使用相同的参数,SP在2秒内运行.

花了很长时间,我甚至不会试图解释我们如何偶然发现这个解决方案,但这就是我们所做的:

在SP的开头,我们声明了3个局部变量并将它们分配给参数的值,如下所示:

declare @param1_copy uniqueidentifier, 
        @param2_copy uniqueidentifier, 
        @param3_copy uniqueidentifier

select @param1_copy = @param1,
       @param2_copy = @param2,
       @param3_copy = @param3
Run Code Online (Sandbox Code Playgroud)

然后,在SP的其余部分,我们用本地副本替换对输入参数的所有引用.

瞧.SP在2秒内执行.这里的团队非常棒.

现在,女士们,先生们,任何人都可以解释这种行为吗?

c# stored-procedures sql-server-2008

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

EF DB-first映射混乱

由于EF的这个小怪癖,我有一个令人沮丧的情况.这是一个简单的行为演示.首先是数据库架构:

在此输入图像描述

如您所见,RestrictedProduct是产品的一个特例,我打算Product用一些特殊的代码创建一个子类.

现在我导入到EF数据模型:

在此输入图像描述

哎呀!EF看到RestrictedProduct只有2个字段,都是FK,所以它将它映射为Product和之间的一对多关系Restriction.所以我回到数据库并添加一个Dummy字段RestrictedProduct,现在我的EF模型看起来好多了:

在此输入图像描述

但那个Dummy领域是愚蠢而毫无意义的.也许我可以删除它?我从数据库表和实体模型中删除了该字段,然后从数据库刷新模型...

在此输入图像描述

不好了!该Product-Restriction协会以新名称(RestrictedProduct1)返回!另外,它不会编译:

错误3034:从行(x,y)开始映射片段时出现问题:具有可能不同键的两个实体映射到同一行.确保这两个映射片段将AssociationSet的两端映射到相应的列.

有没有办法防止这种行为,没有将Dummy字段保留在RestrictedProduct桌面上?

c# entity-framework database-first entity-framework-5

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