gpt4 book ai didi

c# - 在 Azure 移动服务项目和 Asp.Net MVC 项目之间共享数据库

转载 作者:行者123 更新时间:2023-11-30 17:46:02 25 4
gpt4 key购买 nike

我在同一个解决方案中有两个项目,我想知道在 AMS 和 Asp.Net 网站之间共享数据库的理想方式是什么。此外,由于它们都使用某种类型的 Entity Framework ,我发现在项目之间保持模型同步很棘手。

想法1:简单地让他们使用相同的连接字符串;但是如果我在一个项目中使用代码优先迁移,而另一个项目由于迁移历史记录落后而无法更新怎么办?

想法2:不让Asp.Net网站接触数据库;让它通过 HTTP 请求与 AMS 进行通信;但这会增加额外的网络通信开销吗?

想法3:创建一个单独的项目来包含所有 Entity Framework 类和DbContext,并让两个项目都引用它。但由于AMS项目需要EntityData类而不是POCO,这给我在其他项目中重用模型类带来了难以想象的麻烦。一旦安装了所有移动服务 nuget 软件包,我就无法让网站启动。

有什么想法吗?

最佳答案

对你的问题我简单说一下,

想法 1:当您继续执行 EF 迁移时,将会给您带来麻烦,正如您所建议的那样。每个项目中的模型最终可能会有所不同,EF 不会喜欢这样。最好远离这个解决方案。

想法 3:我倾向于在使用量不太大且没有大量更新的代码库的项目中使用它。创建一个包含所有 EF 上下文和迁移的单个数据层项目,然后在多个域层或前端层中引用该数据层。这非常有效,并且可以让您的事情变得简单。移动服务通过 RESTful API 公开数据库实体,因此应该不会有太多麻烦。网站应使用 DTO 和 View 模型在层之间移动数据。我对此解决方案遇到的唯一问题是,当您更新一个项目中的 EF 模型时,您还必须更新并发布第二个项目,因为 EF 模型会发生更改。为了解决这个问题,我自动化了构建和发布过程,只是为了使该过程更容易管理。请考虑解决方案的生命周期,您最终可能会遇到项目数据模型出现分歧的情况,并且最终会在一个数据库中拥有两个数据模型。当您必须随身携带数据时,稍后将它们拆分为两个数据库可能会非常痛苦。

想法 2:在更复杂的情况下,我正在处理大型项目并不断更新代码库,并且该项目将持续到可预见的 future ,最好使用接口(interface)分离这两个服务(这赢得了不要经常更改)并消除对共享数据库的直接依赖。您可以按照您的建议将数据存储在 AMS 中,然后通过网站的 REST 请求访问它。流量可能会增长,并且可能会成为一个问题,具体取决于您的网站和移动服务的需求,这可能会减慢您对网站的响应时间。尽管最初,我担心的是从站点到移动服务接口(interface)再到数据库的许多跃点对站点的响应时间。尽管您应该能够通过读取数据(而不是写入数据)的缓存来减轻影响。

在您的情况下,为了使部署更容易,我会做的就是将网站和移动服务合并到一个解决方案中,并将组合的网站和 API 一起托管在一个 Azure 网站上,共享一个数据层含有EF。因此,如果没有必要,请不要使用移动服务,当然这取决于要求。 ASP.NET 可以在同一个屋檐下很好地支持两者。这有点超出了您的问题范围,但对于考虑您当前的问题可能有用。

关于c# - 在 Azure 移动服务项目和 Asp.Net MVC 项目之间共享数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26809349/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com