小编Var*_*n K的帖子

无法连接到VS2012中的localDB - "建立与SQL Server的连接时发生与网络相关或特定于实例的错误..."

这很奇怪,因为我能够通过SSMS 2008R2使用相同的连接字符串(" Data Source=(LocalDB)\v11.0;Integrated Security=true")连接到localDB

只有C#代码无法连接,我尝试增加登录时间,Connect Timeout=60但没有运气.

我还尝试指定数据库Initial Catalog=&lt;databasename&gt;,其中<databasename>是我通过ssms在localdb上创建的数据库.

关于为什么这不连接的任何指针?

c# sql-server ado.net .net-4.5 localdb

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

MVC框架做了什么来避免它从大量使用反射中继承的低性能

在编写MVC视图时,我看到很多调用Html帮助器方法,如EditorFor/LabelFor.这些扩展在幕后使用了很多反射.再加上路由,模型绑定,验证,EF操作......都是通过反射处理的,我想知道它对性能的影响有多大?

我想知道MVC框架在幕后做什么来解决在如此大规模上使用反射的含义.

我确信它必须做某种缓存,但是知道它究竟做了什么将是一个很好的学习经验,并保证我们不会为了提高生产率而牺牲巨大的性能.

reflection asp.net-mvc performance razor asp.net-mvc-3

7
推荐指数
1
解决办法
482
查看次数

如何防止EF验证在DBContext.SaveChanges()期间未映射的属性

我有一个用户模型,其中包含两个[NotMapped]字符串属性Password和ConfirmPassword.这些是未映射的,因为我将密码保存为字节数组(在salting之后),因此在用户模型中有两个额外的属性(映射)InternalPassword和Salt.

问题是当我使用用户模型更改密码时,实体框架抛出DBEntityValidation错误,指出"需要密码属性".我在这里理解的是,EF正在尝试在保存之前验证我的模型,并且由于未设置Password/ConfirmPassword,因此抛出此错误.这提出了以下问题:

1)如果属性密码被明确表示为[NotMapped],为什么EF在保存期间验证它?2)如果EF在保存期间执行验证,并且在绑定期间也执行相同的操作(控制器操作方法中的IE),它是否会影响性能?(验证两次)3)解决此错误的推荐方法是什么?(如果我将Password属性显式设置为虚拟值,则错误消失.)

编辑:我删除了代码,因为它很长,可能是没有答案的原因.如果有人想看看,我可以在下面添加.

c# entity-framework-4.1 asp.net-mvc-3

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

为什么派生类的字段初始值设定项在基类的初始值设定项之前执行

构造函数按照从上到下依次执行IE基础的顺序执行,然后是派生的.这个安排是基于一个重要的OOP保证,即一个对象(这里是base)必须始终在它被使用之前被初始化(这里是派生类的构造函数).

我想知道为什么字段初始化程序在C#中不遵循这个原则?我在这里错过了什么吗?

我已经通过字段初始化器遇到了这个原理的有用性.我有一个基类,其属性返回Identity对象.每个派生类都有自己的存储库字段,我一直使用field-initializer初始化(使用默认构造函数).最近我决定还必须为存储库类提供Identity对象,因此我在存储库构造函数中引入了一个额外的参数.但我坚持要发现:

public class ForumController : AppControllerBase
{
        ForumRepository repository = new ForumRepository(Identity);
    // Above won't compile since Identity is in the base class.

   // ... Action methods.
}
Run Code Online (Sandbox Code Playgroud)

现在我只剩下一个选项,即使用默认构造函数来填充我的每个控制器,仅用于使用Identity初始化存储库对象.

c# oop inheritance

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

从shim方法调用原始方法

为BCL(或任何库)中的类型成员创建填充程序时.我们经常面临一种情况,我们想要调用我们已经覆盖的原始方法(无论是在垫片代理内部还是外部).例如:

System.Fakes.ShimDateTime.NowGet = () => DateTime.Now.AddDays(-1);
Run Code Online (Sandbox Code Playgroud)

在上面的代码中,调用DateTime.Now时我们想要做的就是返回一个小于实际日期的日期.也许这看起来像一个人为的例子,所以其他(更多)现实的场景是

  1. 能够捕获并验证传递给特定方法的参数值.
  2. 能够计算被测代码访问特定方法/属性的次数.

我面对真实应用中的最后一个场景,无法找到Fakes on SO的答案.但是,在深入了解Fakes文档后,我找到了答案,因此将其与社区问题一起发布.

c# unit-testing shim microsoft-fakes

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