这很奇怪,因为我能够通过SSMS 2008R2使用相同的连接字符串(" Data Source=(LocalDB)\v11.0;Integrated Security=true")连接到localDB
只有C#代码无法连接,我尝试增加登录时间,Connect Timeout=60但没有运气.
我还尝试指定数据库Initial Catalog=<databasename>,其中<databasename>是我通过ssms在localdb上创建的数据库.
关于为什么这不连接的任何指针?
在编写MVC视图时,我看到很多调用Html帮助器方法,如EditorFor/LabelFor.这些扩展在幕后使用了很多反射.再加上路由,模型绑定,验证,EF操作......都是通过反射处理的,我想知道它对性能的影响有多大?
我想知道MVC框架在幕后做什么来解决在如此大规模上使用反射的含义.
我确信它必须做某种缓存,但是知道它究竟做了什么将是一个很好的学习经验,并保证我们不会为了提高生产率而牺牲巨大的性能.
我有一个用户模型,其中包含两个[NotMapped]字符串属性Password和ConfirmPassword.这些是未映射的,因为我将密码保存为字节数组(在salting之后),因此在用户模型中有两个额外的属性(映射)InternalPassword和Salt.
问题是当我使用用户模型更改密码时,实体框架抛出DBEntityValidation错误,指出"需要密码属性".我在这里理解的是,EF正在尝试在保存之前验证我的模型,并且由于未设置Password/ConfirmPassword,因此抛出此错误.这提出了以下问题:
1)如果属性密码被明确表示为[NotMapped],为什么EF在保存期间验证它?2)如果EF在保存期间执行验证,并且在绑定期间也执行相同的操作(控制器操作方法中的IE),它是否会影响性能?(验证两次)3)解决此错误的推荐方法是什么?(如果我将Password属性显式设置为虚拟值,则错误消失.)
编辑:我删除了代码,因为它很长,可能是没有答案的原因.如果有人想看看,我可以在下面添加.
构造函数按照从上到下依次执行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初始化存储库对象.
为BCL(或任何库)中的类型成员创建填充程序时.我们经常面临一种情况,我们想要调用我们已经覆盖的原始方法(无论是在垫片代理内部还是外部).例如:
System.Fakes.ShimDateTime.NowGet = () => DateTime.Now.AddDays(-1);
Run Code Online (Sandbox Code Playgroud)
在上面的代码中,调用DateTime.Now时我们想要做的就是返回一个小于实际日期的日期.也许这看起来像一个人为的例子,所以其他(更多)现实的场景是
我面对真实应用中的最后一个场景,无法找到Fakes on SO的答案.但是,在深入了解Fakes文档后,我找到了答案,因此将其与社区问题一起发布.
c# ×4
.net-4.5 ×1
ado.net ×1
asp.net-mvc ×1
inheritance ×1
localdb ×1
oop ×1
performance ×1
razor ×1
reflection ×1
shim ×1
sql-server ×1
unit-testing ×1