【问题标题】:ArgumentException when creating instance of object that inherits from ObjectContext创建从 ObjectContext 继承的对象实例时出现 ArgumentException
【发布时间】:2009-09-18 00:19:47
【问题描述】:

我大致遵循excellent series of blog posts by Kazi Manzur Rashid 作为学习练习来学习如何实现一些新的(至少对我而言)设计模式,但我从一开始就遇到了麻烦。

我基本上已经为DatabaseRepositoryBaseRepositoryBaseTests 类复制了他的代码,但是当我尝试运行测试时,我收到一条错误消息

无法创建类 Booking.Infrastructure.EntityFramework.Repositories.Tests.RepositoryBaseTests 的实例。错误:System.Reflection.TargetInvocationException:调用的目标已引发异常。 ---> System.ArgumentException: 初始化字符串的格式不符合从索引 0 开始的规范..

通过调试器,我验证了 Database 类的构造函数上抛出了异常,如下所示:

public Database(
    IConfigurationManager configurationManager, 
    string connectionstringName)
: base(
    GetConnectionString(configurationManager, connectionstringName), 
    "BookingEntities")
{ // Nothing happens here }

调用base 构造函数时会引发错误,如果我对当前发送的值进行硬编码,它将如下所示:

: base("Dummy connStr", "BookingEntities")

为什么这不起作用?

【问题讨论】:

    标签: entity-framework inheritance constructor objectcontext


    【解决方案1】:

    “Dummy connStr”不是有效的 EF 连接字符串。

    有效的 EF 连接字符串如下所示:

    connectionString="metadata=res://*/Data.Model.csdl|res://*/Data.Model.ssdl|res://*/Data.Model.msl;provider=System.Data.SqlClient;provider connection string="Data Source=SERVERNAME\SQLDEV2008;Initial Catalog=DBName;Integrated Security=True;MultipleActiveResultSets=True""
    

    【讨论】:

    • 好的。好吧,我可以弄清楚连接字符串不是有效的,但我认为它应该 无论如何都可以正常工作,就像文章中的示例一样。无论如何,我还没有建立数据库,所以我真的没有要提供的连接字符串。是否有任何(简单的)方法来构建一个包含所有必要部分但实际上不会做任何事情的虚拟字符串?
    • 只需使用 Northwind.mdb 或其他一些演示数据库。
    • 问题是我这样做是为了对我的存储库进行单元测试 - 我根本不想连接到数据库,只是看到存储库从 @987654322 中获取了正确的内容@对象。
    • 在你做一些需要它的事情之前,EF 不会连接,比如新建一个 ObjectContext 并选择一些东西。使用 SQL Server Profiler 来证明这一点。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-10-06
    • 2013-07-20
    • 1970-01-01
    • 2014-04-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多