小编Bre*_*tin的帖子

在所选文件中找不到从 DbContext 派生的可构造类型(EF Power Tools Beta 3/Visual Studio 2012)

我正在尝试使用 EF Power Tools Beta 3 的“视图模型”功能,因为Visual Studio 2012 中的Julie Lerman 非常依赖它

我原来有“序列不包含匹配元素”的问题,很多人似乎都遇到过。上述文章中的解决方案是解决问题的可接受的解决方法。

我现在遇到第二个错误:

“在所选文件中找不到源自 DbContext 的可构造类型”

Julie's blog 和这个问题中提出的问题原因是某处存在冲突的扩展名。

我已经禁用了所有可能的扩展,但我仍然收到错误消息。

有没有关于如何解决这个问题的更多信息?

或者,我也在使用 VS2013 预览版。此版本的 Visual Studio 中是否提供此(工作)功能?

entity-framework visual-studio ef-power-tools

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

使用DDD有界上下文的实体配置管理

我正在尝试实现这里概述的多个DDD有界上下文.这是一个示例上下文:

示例上下文

我有一个实体类型配置文件,每个实体都有适当的FluentAPI映射(使用EF工具进行逆向工程).这些配置文件还包括关系配置.

例如:UserMap.cs

// Relationships
this.HasOptional(t => t.SecurityProfile)
    .WithMany(t => t.Users)
    .HasForeignKey(t => t.SecurityProfileCode);
Run Code Online (Sandbox Code Playgroud)

SecurityProfileDomainPermission不是DbSets在上下文中.由于导航属性UserModule分别导致它们自动进入模型.

这导致我的第一个问题.将User(或任何其他实体)添加到任何其他上下文时,我必须记住做以下两件事之一:

  1. 还要将配置添加到模型构建器SecurityProfile(以及实体上的每个其他关系)

  2. SecurityProfile不知何故明确地从模型中排除.

这开始变成一个维护噩梦.

我很满意明确地"修剪"实体图,如上面第2点所述.

但是,Ignore()当实体配置文件中已经定义了关系时,实体似乎不可能.

尝试modelBuilder.Ignore<SecurityProfile>();上述上下文OnModelCreating会出现以下错误ConfigureAssociations():

System.InvalidOperationException:导航属性"SecurityProfile"不是"User"类型的声明属性.验证它是否未从模型中明确排除,并且它是有效的导航属性.

我能想到的唯一解决方案是继承基本配置类并覆盖每个上下文中的关系配置.考虑到我们最终可能会有30-40个单独的背景,这也可能成为维护的噩梦.

或者,我可以为每个上下文设置非常具体的实体模型,但这又会导致实体类爆炸以及重复配置中的潜在维护问题.

在实现有界上下文时,如何才能最好地管理和维护实体及其实体配置?

c# domain-driven-design entity-framework

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

删除showModalDialog API

随着即将showModalDialog从各种浏览器中删除API,我们公司与许多提供大规模企业Web应用程序的公司一样,现在面临着一个重大的困境.

虽然我们将调用集中到showModalDialog最多3行代码,但我们广泛依赖此代码来提供模态用户提示的反馈(快速搜索解决方案显示大约2400个实例).

我们可以showModalDialog相当容易地删除并用基于Javascript/css的替代方案替换它,这不是问题.我们面临的问题是所有的调用代码都不会被阻塞,例如

if(doConfirm(...)) {
   ...
} else {
   ...
} 
Run Code Online (Sandbox Code Playgroud)

由于引入了非阻塞替代方案,上述内容将会失败.我们也不能使用内置的阻塞方法(警告,确认),因为在许多情况下对话框按钮是自定义的,并且还可以设置样式以适应我们的应用程序.

基于以上所述,是否有任何实用的解决方法/解决方案可以用来避免重新考虑如此多的遗留先前阻塞代码?

javascript firefox jquery google-chrome showmodaldialog

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

强制参数化

对于SQL Server中的即席查询,您不会选择在简单参数化上启用强制参数化的原因是什么?

有性能开销吗?如果是这样,它不会被重复使用的查询计划所产生的(可能的)收益所抵消?

sql-server parameterization sql-execution-plan

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

HtmlTextWriter - 向标签添加多个类

使用 HtmlTextWriter 将多个类添加到标签的最佳方法是什么?

我想做的是类似的事情......

 writer.AddAttribute(HtmlTextWriterAttribute.Class, "Class1");
 writer.AddAttribute(HtmlTextWriterAttribute.Class, "Class2");
 writer.RenderBeginTag(HtmlTextWriterTag.Table);
Run Code Online (Sandbox Code Playgroud)

导致...

<table class="Class1 Class2">
Run Code Online (Sandbox Code Playgroud)

我很感激我能做到...

writer.AddAttribute(HtmlTextWriterAttribute.Class, "Class1 Class2");
Run Code Online (Sandbox Code Playgroud)

然而,在动态构建控件时并不总是如此简单。是否有其他方法可以将类“附加”到标签?

c# asp.net class htmltextwriter addattribute

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

ASP.NET会话缓存 - 单个项目到期

为什么在向Session对象添加项目时无法设置个人到期时间?

有了Cache.Add()你可以设置一个绝对过期和可调过期.为什么你不能这样做Session

asp.net session caching

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

模拟DirectoryEntry的"属性"属性

我正在尝试对一些Active Directory代码进行单元测试,与此问题中概述的完全相同:

创建DirectoryEntry实例以用于测试

接受的答案建议为DirectoryEntry类实现一个包装器/适配器,我有:

public interface IDirectoryEntry : IDisposable
{
    PropertyCollection Properties { get; }
}

public class DirectoryEntryWrapper : DirectoryEntry, IDirectoryEntry
{
}
Run Code Online (Sandbox Code Playgroud)

问题是我的mock 上的" Properties "属性IDirectoryEntry没有初始化.试图像这样设置模拟:

this._directoryEntryMock = new Mock<IDirectoryEntry>();
this._directoryEntryMock.Setup(m => m.Properties)
                        .Returns(new PropertyCollection());
Run Code Online (Sandbox Code Playgroud)

导致以下错误:

类型'System.DirectoryServices.PropertyCollection'没有定义构造函数

据我所知,当尝试仅使用内部构造函数实例化一个类时,会抛出此错误:

类型'...'没有定义构造函数

我试图为类编写一个包装器/适配器PropertyCollection但是没有公共构造函数我无法弄清楚如何从类中实例化或继承.

那么如何在类上模拟/设置" Properties "属性以DirectoryEntry进行测试呢?

c# directoryservices unit-testing moq active-directory

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

在TestMethod和TestInitialize中创建测试对象

目前我正在通过在每个测试中创建测试对象来编写单元测试TestMethod.这样做的主要原因是为了促进自我包容,易于阅读/调试,并且还可能在构造期间定制依赖性.

public class MyClass
{
    public MyClass(ISomeService serviceA, ISomeOtherService serviceB)
    {
        ...
    }
}

[TestMethod]
public void it_should_do_something()
{
    var myClass = new MyClass(serviceA, serviceB);
    myClass.DoSomething();
    ...
}
Run Code Online (Sandbox Code Playgroud)

然而,这正在成为维护的噩梦,特别是当可能在类上进行许多测试并且我想为构造函数添加另一个依赖项时.它要求我改变我的测试类中的每一行构造.

我希望通过在TestInitialize方法中初始化对象来保持干燥,这将改善维护,同时仍然保持自我控制方面.

private MyClass _myClass;

[TestInitialize]
public void Init()
{
    _myClass = new MyClass(serviceA, serviceB);
}
Run Code Online (Sandbox Code Playgroud)

我可以看到这样做的唯一缺点是,如果我需要注入一组不同的依赖项,我可能需要重新初始化对象.对于第一次查看代码的另一个开发人员来说,读取/调试也可能稍微不那么清楚.我没有想到这种方法还有其他任何负面影响吗?

  1. 这种情况的最佳做法是什么?

  2. 在TestMethod之外初始化类是不好的做法吗?

  3. 我是否应该支持维护和DRY原则,或者为了可读性/逻辑目的保持自包含?

c# unit-testing

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

从VBScript调用JScript函数 - 圆括号

我试图为传统的经典ASP应用程序带来一些理智,作为其中的一部分,我正在尝试为我创建的一些JScript类编写Fluent API.

例如 myClass().doSomething().doSomethingElse()

这里概述这个概念(在VBScript中)

这是我的示例JScript类:

var myClass = function () {
    this.value = '';
}

myClass.prototype = function () {

    var doSomething = function (a) {
        this.value += a;
        return this;
    },

    doSomethingElse = function (a, b) {
        this.value += (a + b);
        return this;
    },

    print = function () {
        Response.Write('Result is: ' + this.value + "<br/>");
    }

    return {
        doSomething: doSomething,
        doSomethingElse: doSomethingElse,
        print: print
    }; …
Run Code Online (Sandbox Code Playgroud)

vbscript fluent-interface method-chaining asp-classic jscript

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