与EF的SQL Server连接字符串

时间:2012-11-17 14:41:43

标签: c# .net sql-server entity-framework sql-server-2012

我刚刚将MySQL数据库转换为SQL Server。我是SQL Server的新手,我想将它与Entity Framework 4一起使用,所以我不应该成为一个重要人物。

我想我没有得到关于DB中对象的概念等等。在SQL Server Mgmt Studio中,我可以执行此查询

/****** Script for SelectTopNRows command from SSMS  ******/
SELECT TOP 1000 [id]
  FROM [db].[dbo].[mytable]

它工作正常,但是如果我使用这个连接字符串

Data Source=MYPC-PC\;Integrated Security=SSPI;Min Pool Size=5;Max Pool Size=60;Connect Timeout=30

查询将执行正常,但它将排除[db],因此它不会返回任何行。这是来自实体框架的查询。

/****** Script for SelectTopNRows command from SSMS  ******/
SELECT TOP 1000 [id]
  FROM [dbo].[mytable]

如果我更改连接字符串以包含这样的数据库

Data Source=MYPC-PC\;Integrated Security=SSPI;Database=db;Min Pool Size=5;Max Pool Size=60;Connect Timeout=30

我收到此错误

  

数据库中已有一个名为“MyTable”的对象。

但是只有一个名为Table的表。我不知道这背后的概念。我究竟做错了什么?我正在使用SQL Server 2012

更新1

我先使用代码。

        var result = db.MyTable.Where(x => x.Prop == Prop)
            .OrderBy(x => x.Something)
            .Take(10);

        var data = result.ToList();

我的DbContext类

public class Context : DbContext
{

     public Context()
    : base("Context")
  {
    // Get the ObjectContext related to this DbContext
    var objectContext = (this as IObjectContextAdapter).ObjectContext;

    // Sets the command timeout for all the commands
    objectContext.CommandTimeout = 12000;
  }

    public DbSet<Models.MyTable> MyTable{ get; set; }


}

在web.config中

  <connectionStrings>
    <add name="Context" providerName="System.Data.SqlClient" connectionString="connectionString"  />

1 个答案:

答案 0 :(得分:2)

在第一次迁移之前,您的表MyTable已存在于数据库中。所以你可以删除这个表,然后在第一次运行应用程序时重新创建它。

修改 如果你不想删除你的桌子,如果你至少使用EF 4.3那么 从控制台Add-Migration InitialMigration -IgnoreChanges运行 然后运行Update-Database