【问题标题】:Code first database on Entity Framework 5 in another project另一个项目中实体框架 5 上的代码优先数据库
【发布时间】:2012-10-25 08:32:35
【问题描述】:

我有一个 ASP.NET MVC 4 站点,其中包含由代码优先方法生成的 MSSQL 数据库。我想在另一个项目中使用这个数据库。这个项目应该从数据库中抓取几个表,更新它们并向用户发送通知。

将现有数据库从第一个项目添加到第二个项目的最佳方法是什么?我正在考虑通过数据库生成 edmx,但这种方法似乎不够好。

【问题讨论】:

  • 通过数据库生成edmx意味着数据库优先...完全有效,你的问题是什么?
  • 您的其他应用程序也是 Web 应用程序吗?
  • 你不能把你的DbContext 移到一个库中并在两个项目中使用它吗?
  • @Pluc 我认为这将是一个 Windows 服务项目,因为它应该每 30 分钟查看一次 db,如果发生更改,它会向用户发送通知。
  • @RaphaëlAlthaus 我想使用 DbContext。我觉得这样更舒服。但 DB 优先方法应该使用 ..Entries。还是我错了?

标签: asp.net-mvc asp.net-mvc-3 entity-framework-4 asp.net-mvc-4 entity-framework-5


【解决方案1】:

您最好将 EF 代码和实体移动到它们自己的库中,然后让您的两个不同项目(Web 和 Windows 服务)引用该库。

然后,如果当您的数据库结构或实体发生变化时,您只需在一个地方执行此操作。

【讨论】:

  • 这是一个很好的解决方案,但我想使用 DbContext 而不是 ..Entries。我可以制作一个单独的 DbContext 库,然后在 ASP.NET MVC 4 中使用它吗?我害怕一些不常见的问题。但乍一看应该是一个不错的解决方案。
【解决方案2】:

如果第二个项目不打算修改数据库的结构,那么我会在您的第二个项目中使用数据优先的方法。

【讨论】:

  • 我也想这个方向。首先在一个项目代码中使用,然后在另一个数据中使用似乎很自然,因为我们已经在另一个项目中准备了数据。但是我遇到了 DbContext & ..Entries 的问题(请参阅问题下方我对 RaphaëlAlthaus 的评论)。
  • Db First 可以使用 dbContext,你只需要在你的 edmx 模型上使用它的代码生成器 :)
  • 这是个好消息!你能解释一下怎么做吗?如果我通过数据库生成 edmx,那么它会让我成为 ..Entities 类。如何在我的第一个项目中获得 DbContext?
  • 打开您的模型然后右键单击它,您将看到一个显示“添加代码生成项...”的菜单项,单击它会弹出代码生成项显示,选择 EF5 .xDbContextGenerator 然后保存你的模型。
  • 谢谢!它工作正常。 “下一代”的好文章:msdn.microsoft.com/en-us/data/jj206878
【解决方案3】:

您可以在现有数据库上毫无问题地使用 codefirst 映射。如此简单的参考程序集与其他项目中的数据上下文,它将起作用。 (别忘了在其他项目的配置文件中设置连接字符串)

【讨论】:

  • 我可以参考我的整个 MVC 4 项目还是应该创建第三个项目并在其中放置一个 db-code?​​span>
  • 您应该将您的 dbcontext 和所有映射移动到不同的项目(原样)并从项目 mvc 和新项目中引用它。
猜你喜欢
  • 2013-07-04
  • 2021-01-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-10-11
相关资源
最近更新 更多