我有 EF 5.0 代码优先 VS 2012 项目,所有实体框架菜单命令(查看实体数据模型 DDL SQL)都会产生“调用目标引发异常”弹出窗口。我认为还发生了变化的是 EF Power Tools Beta 1(或 VS 2010,我不确定)用于在输出窗口中显示 EF Power Tools 消息。现在我得到的只是弹出窗口......这是VS还是Power Tools问题?
5 回答
这是我的工作:
将构造函数注释掉,并将静态 MyDbContext 保持原样 -->
public class MyDbContext: DbContext
{
public static string ConnectionName = "Name = SMS_ADvTECHContext";
static MyDbContext()
{
Database.SetInitializer<SMS_ADvTECHContext>(null);
}
/* public SMS_MyDbContext()
: base(ConnectionName)
{
}*/
}
然后,如果您右键单击上下文类 --> Enityframework --> 查看实体数据模型(只读),它会生成视图!
遇到了这个错误,这是一个更简单的问题......包含我的上下文的项目不是启动项目。一旦我将项目设置为启动项目,它就开始工作了。
当我没有在包含我的 DbContext 类的项目中的 App.config 中配置正确的默认连接工厂时,我遇到了这个错误。我更新了它以使用正确的工厂,这个错误就消失了。就我而言,我将其设置为使用 LocalDbConnectionFactory:
<entityFramework>
<defaultConnectionFactory type="System.Data.Entity.Infrastructure.LocalDbConnectionFactory, EntityFramework">
<parameters>
<parameter value="v11.0" />
</parameters>
</defaultConnectionFactory>
</entityFramework>
当您选择实体框架菜单命令时,Visual Studio 可能无法确定用于 DBContext 的连接字符串。
在我的例子中,我能够通过验证我的 dbContext 有一个“默认”连接字符串来解决这个问题。因此,当您右键单击数据库上下文并选择实体框架时,您将与数据库建立连接。
换句话说,我修改了我的 DBContext 以从命令行参数中选择连接字符串到我的应用程序。因此,通常情况下,我的数据库上下文没有“默认”值。
public class MyDbContext : DbContext
{
public static string ConnectionName;
public DnnDbContext()
: base( "Name=" + ConnectionName) {
}
如您所见,默认情况下我没有 ConnectionString。
我改为:
public static string ConnectionName = "DefaultConnNameInAppConfig";
当我在 web.config 中配置了多个具有相同名称的连接字符串时,我遇到了这个问题。