在SQL Server Management Studio中看不到EF数据库

时间:2013-08-16 18:00:19

标签: entity-framework

我使用EF代码创建了一个数据库 - 首先是http://blogs.msdn.com/b/adonet/archive/2011/03/15/ef-4-1-code-first-walkthrough.aspx。但是当我通过add()向db输入数据然后调用savechanges()时,我没有在SQL Server数据库文件夹中看到新数据库,也没有例外。这样对吗?我在哪里可以找到我的数据库以及如何将其放在数据库文件夹中?

我使用此代码:

     public class Name
      {
       public long NameId { get; set; }
       public string FullName { get; set; }
      }

   public class InfoContext : DbContext
     {
       public DbSet<Name> Names { get; set; }        
     }

然后我称之为:

      var db = new InfoContext();
        var Names = new Name
        {
            NameId = 1,
            FullName = "test"
        };
        db.Names.Add(Name);

        db.SaveChanges();
        var test = db.Names.Find(1);//there I get correct value

我在web.config中有connectionString,如下所示:

     <connectionStrings>
     <add name="InfoName" providerName="System.Data.SqlClient" 
     connectionString="Server = .\MYINSTANCE; Initial Catalog=mydbname;" />
   </connectionStrings>

3 个答案:

答案 0 :(得分:1)

根据您的评论,您需要修改项目根目录中的web.config文件(而不是Views文件夹中的文件。在那里,您可以添加如下部分:

<connectionStrings>
    <add name="EFDbContext" connectionString="Data Source = .; Initial Catalog = ITSDB; Integrated Security = true" providerName="System.Data.SqlClient"/>
</connectionStrings> 

元素的name属性是数据模型的DbContext名称,因此如果您的类定义为:

public class SomeContext : DbContext
{
      ...
}

然后你的配置应该是:

<connectionStrings>
    <add name="SomeContext" connectionString="Data Source = .; Initial Catalog = ITSDB; Integrated Security = true" providerName="System.Data.SqlClient"/>
</connectionStrings>

对于连接字符串,它依赖于您的数据库。

答案 1 :(得分:0)

检查配置中的defaultConnectionFactory类型。我希望它设置为LocalConnectionFactory,因为这似乎是默认的。

将其更改为以下内容,将使用您的SQL实例。

<defaultConnectionFactory type="System.Data.Entity.Infrastructure.SqlConnectionFactory, EntityFramework">
  <parameters>
    <parameter value="Data Source=.; Integrated Security=True; MultipleActiveResultSets=True;" />
  </parameters>
</defaultConnectionFactory>

您的数据库应出现在SQL Management Studio(SQLMS)中,其名称与命名空间和DbContext匹配。

答案 2 :(得分:0)

或者您可以在“SQL Source Studio”中输入“Data Source =”值,这是您在SQL Management Studio中选择的服务器名称。

<connectionStrings>
<add name="SomeContext" connectionString="Data Source = **Server'sName**; Initial Catalog = ITSDB; Integrated Security = true" providerName="System.Data.SqlClient"/>