0

我刚刚将 MySQL 数据库转换为 SQL Server。我对 SQL Server 完全陌生,我想将它与 Entity Framework 4 一起使用,所以我不应该成为一个大人物。

我想我没有得到关于数据库等对象的概念。在 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"  />
4

1 回答 1

2

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

编辑: 如果您不想删除表并且至少使用 EF 4.3
,则从控制台Add-Migration InitialMigration -IgnoreChanges
运行,然后运行Update-Database

于 2012-11-17T15:13:42.550 回答