【问题标题】:different database folder in EF 6EF 6 中的不同数据库文件夹
【发布时间】:2015-05-28 15:23:32
【问题描述】:

是否可以强制 EF 6 在特定文件夹而不是代码优先方案中的标准文件夹中创建 sql server 数据库?我做了很多搜索,但找不到任何有用的信息。谢谢。

PS:

连接字符串:

<add name="BlaDbContext" connectionString="Data Source=127.0.0.1,1234;Initial Catalog=xxx;User Id=xxx;Password=xxx;" providerName="System.Data.SqlClient" />

还尝试包含 DataDirectory 并按照 Steve Greene 的建议从我的控制台应用程序中对其进行操作。

PPS:

也试过了:

context.Database.ExecuteSqlCommand(TransactionalBehavior.DoNotEnsureTransaction,
    @"  ALTER DATABASE [DB] MODIFY FILE 
        (
           Name = DB,
           Filename = 'D:\Databases\DB.mdf'
        );

        ALTER DATABASE [DB] MODIFY FILE 
        (
           Name = DB_log, 
           Filename = 'D:\Databases\DB_log.ldf'
        );
    ");

【问题讨论】:

  • 你的意思是localdb? stackoverflow.com/questions/11989371/…
  • 不,我的意思是与默认文件夹不同的文件夹
  • SQL Server?还是其他数据库?
  • 是的 jjj。我已经修改了我的问题。
  • 你……有连接字符串吗?

标签: entity-framework entity-framework-6


【解决方案1】:

您可以覆盖数据文件夹:

// Set |DataDirectory| value
AppDomain.CurrentDomain.SetData("DataDirectory", "C:\MyFolder");

https://msdn.microsoft.com/en-us/library/37z40s1c(v=vs.110).aspx

【讨论】:

  • 对,就是localdb。如果您使用的是 SQL Server,最简单的做法是在 EF 之外创建您想要的数据库,并在连接字符串中引用它。如果这不可行,您可能需要编写自定义初始化程序 blogs.microsoft.co.il/gilf/2011/05/30/… 并包含 SQL 代码以在您想要的位置创建数据库: context.Database.ExecuteSqlCommand("CREATE DATABASE xxx ON PRIMARY ( NAME = N'xxx',文件名 = N'C:\MyPath\xxx.mdf') ...
  • 谢谢我已经写了一个自定义初始化程序。请参阅我的问题中的 PPS,它显示了一小部分。但是,我不认为我可以操纵 EF 的 CREATE DATABASE 命令......不过,如果你知道怎么做的话。
  • 这里有类似的问题,您可以调整部分答案stackoverflow.com/questions/30451738/…
  • 谢谢,史蒂夫看起来很有希望。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-09-14
  • 2022-11-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-07-07
相关资源
最近更新 更多