【问题标题】:EF4 database first configurable schemaEF4 数据库第一个可配置架构
【发布时间】:2013-07-15 16:28:49
【问题描述】:

我有一个问题想要解决好几天,但我找不到正确的方法。 我正在使用 EF4,并且我有一个应用程序,我首先使用 DataBase,它最初创建了 ObjectContext,然后我下载了 DbContext 生成器并生成了它。

问题是,我需要应用程序能够从某个配置文件中获取数据库 SCHEMA,而不是始终使用“dbo”默认值。 我试图在“OnModelCreating”重载方法中使用“ToTable”方法(这样我可以指定架构),但作为this article sais,因为我使用的是DataBase First,所以不会调用该方法。

如何使架构名称可配置? 这甚至可能吗? 我也阅读了this 文章,其中说我可以先将数据库与代码结合起来,但如果我不能使用“OnModelCreating”方法,我就看不到如何做到这一点。

提前非常感谢!!!

【问题讨论】:

  • Entity Framework 似乎强制添加dbo 作为架构,我看到的所有解决方案总是谈论代码优先。但是你不能用代码优先的解决方案来解决数据库优先的问题,所以看任何类似的东西都是没有意义的。

标签: entity-framework-4 database-schema ef-database-first


【解决方案1】:

我不知道如何配置架构。但是,如果您希望您的 db first 方法首先更改为代码,只需更改 DbContext 构造函数的字符串参数。

假设您有以下 EF Db 首先为您创建的 DbContext:

public class MyDbContext : DbContext
{
    public MyDbContext()
        : base("Name=DefaultConnection")
    {

    }

    // DbSets ...
}

将其更改为以下内容以首先使用代码及其所有魔术工具(迁移等):

public class MyDbContext : DbContext
{
    public MyDbContext()
        : base("YourDbFileName")
    {

    }

    // DbSets ...
}

这会导致 EF 在您的本地计算机上使用 SQL Express 在您的 web.config 文件中创建一个名为 YourDbFileName 的新连接字符串,就像最初创建的早期 DefaultConnection Db 一样。

您可能需要继续您的方式,就是根据您的服务器和其他选项编辑YourDbFileName ConStr。

【讨论】:

  • 在数据库优先设置中使用任何类型的“代码优先”都是没有意义的,所以我不明白你在这里要回答什么。
猜你喜欢
  • 2011-06-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-05-22
  • 1970-01-01
  • 2013-02-27
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多