0

如何在实体框架中使用应该位于解决方案目录(或其他地方)中的mdf文件? 默认情况下,EF在“C:\ Program Files \ Microsoft SQL Server \ MSSQL10_50.SQLEXPRESS \ MSSQL \ DATA”中创建该文件。 此外,在启动初始化服务器实例的.net应用程序之后,能够通过Windows对等网络访问数据库将会很好。在使用EF时使用附加文件的SQL Server Express

我想我必须使用类似的连接字符串的东西是: http://msdn.microsoft.com/en-us/library/bb264564%28v=sql.90%29.aspx,它采用 用户实例和AttachDbFilename

这篇文章指出,我可以使用连接字符串像往常一样与EF: http://blogs.msdn.com/b/adonet/archive/2012/01/12/ef-4-3-configuration-file-settings.aspx

当我使用我自己的(不是默认的EF)连接字符串时得到的是:'System.Data.Entity.Internal.AppConfig'的类型初始值设定项引发异常。 (配置系统初始化失败)使用

<configuration> 
    <connectionStrings> 
    <add name="SomeContext" 
     providerName="System.Data.SqlClient" 
     connectionString="Server=.\SQLEXPRESS; 
     AttachDbFilename=C:\temp\SomeNamespace.SomeContext.mdf; 
     Integrated Security=True; 
     User Instance=True" /> 

    </connectionStrings> 
... 

版本:

的SQL Server Express版R2 SP1

EF 4.3.1(代码优先)

回答

0

多亏了这些问题的答案,我能够使用自定义位置:

Problem connecting to database - user instance and Entity Framework issue

WPF and ADO.NET EF - error part II

我的步骤是:

  • 复制.mdf和由EF被创造的地方我想他们是.LDF文件
  • 启动Microsoft SQL Server Management Studio中(快递)作为管理员并使用SSMS(已被复制)删除旧数据库
  • 将复制的.mdf文件附加到使用SSMS的本地服务器
  • 重构App.config,以便configSections在connectionStrings部分之前
  • 更改连接字符串(它不使用的用户实例不再被弃用反正)

我的App.config现在看起来是这样的:

<?xml version="1.0" encoding="utf-8"?> 
<configuration> 
    <configSections>  
    <section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=4.3.1.0, Culture=neutral, PublicKeyToken=u57a3c561234h089" /> 
    </configSections> 

    <connectionStrings> 
    <add name="SomeContext" 
     providerName="System.Data.SqlClient" 
     connectionString="Server=.\SQLEXPRESS; Integrated Security=True; Database=SomeNamespace.SomeContext" /> 
    </connectionStrings> 

    <entityFramework> 
    <defaultConnectionFactory 
    ... 
相关问题