【问题标题】:Combine Code First and Database First Approaches结合代码优先和数据库优先方法
【发布时间】:2018-01-26 06:27:34
【问题描述】:

假设我有一个现有项目,它的实体类是通过使用服务器 A 中的 Database First Approach 创建的。随后我在服务器 B 中创建了一个具有完全相同名称的新数据库,因此导入来自服务器A的数据。接下来,通过使用Code First Approach,我进一步添加两个表(具体而言),并更新服务器B中的数据库。最后,我删除了现有的edmx模型现有项目,并通过使用服务器 B 中的 ADO 实体框架方法 再次添加它。请注意,我目前无法从我之前创建的自动生成模型类中引用变量类型,在事实上他们都是同名的。我可以知道我该怎么做吗?还是我不应该这样做?好吧,我只是想尝试一些新的东西。希望得到一些解释。

【问题讨论】:

  • 第一句话毫无意义。没有办法使用 DB-first 方法创建数据库。在这种情况下,您自己创建 DB 并让 EF 创建实体类...
  • 我了解代码首先可以在 c# 代码中创建,而无需在数据库中进行。 @MichalTurczyn
  • 嗨@MichałTurczyn 感谢您的提醒。我已经编辑了我的帖子。

标签: c# sql-server entity-framework ef-code-first ef-database-first


【解决方案1】:

好吧,我会怎么做:

首先,在您的应用程序中存储两个连接字符串,一个用于服务器 A,一个用于服务器 B。在上下文类构造函数中,您可以指定要使用的连接字符串(假设 conn。字符串 A 用于 A db 和 conn . 字符串 B 代表 B 分贝)。像这样的:

<connectionStrings>
  <add name="connStrA" ... />
  <add name="connStrB" ... />
</connectionStrings>

创建第一个,因为您使用了 DB 优先方法。然后,您必须切换自动生成的上下文类。您必须更改传递给构造函数的参数,默认情况下它应该类似于:public MyContextClass() : base("name=connStrA"){}。 您必须将其更改为使用connStrB

进行您的更改(使用迁移),它们将反映在 DB 中,您在提到的构造函数中指定的连接字符串中指出了这些更改。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多