尝试在没有太多运气的情况下部署实体框架代码优先应用程序?最佳部署策略?
Posted
技术标签:
【中文标题】尝试在没有太多运气的情况下部署实体框架代码优先应用程序?最佳部署策略?【英文标题】:Trying to deploy an Entity Framework Code First application without much luck? Best Deployment strategy? 【发布时间】:2011-10-07 22:30:58 【问题描述】:尽管有一些小问题和一些变通方法,我的基于 MVC 的实体框架(代码优先)应用程序现在已经完成并可以部署了。
我最初尝试通过 SQL Express 进行开发,但是,我在使用 I asked about here 的 Code First 方法时遇到了不间断的问题,这使得它完全无法使用。
因此,最后,我按照大多数指南开发了它并使用了 SQL Compact Edition。这对于开发来说绝对是绝妙的——但是——现在它已经到了部署阶段,我被困住了。
我看到有人说要从 .SDF
文件生成 Schema,但是,在 Compact 版本中存在差异和限制,例如 nvarchar
被限制为 4000
的长度,我需要 max in我的申请。
那么基本上,我能做什么?
除此之外——但不是必须的——我将很快进入下一个项目,这将涉及大量使用需要存储在超过 4000 个字符的数据库中的项目。现在有没有更好的开发策略/是否可以将 Code First 与 SQL Server Express 或 SQL Full 一起使用(我有 MSDN 并愿意安装/使用任何有帮助的东西)。
【问题讨论】:
【参考方案1】:以下是我的非官方建议:
对于大多数基于 MVC 的生产应用程序来说,SQL CE 不是一个可行的选择(尽管在极少数情况下我在生产服务中使用过它)。 我会尽量避免在开发和生产之间切换数据库 - 即,不要在 SQL CE 上测试并部署到 SQL Express 或其他东西。 我从未尝试在 Visual Studio 中打开 MDF - 也许我误解了您在此处所说的内容,但总的来说,我建议使用特定于 SQL Server 的工具来管理数据库:http://www.microsoft.com/download/en/search.aspx?q=sql+server+management+studio+express。 关于另一篇文章,我通常不鼓励使用连接字符串的 AttachDBFilename 部分,除非您出于特定目的需要它。 听起来您可能想查看可用的数据库初始化策略:http://blog.oneunicorn.com/2011/03/31/configuring-database-initializers-in-a-config-file/。 我们的博客和 MVC MSDN 网站上有很多演练 - 如果这些对您不起作用,请随时通过我们的博客与我们联系,并就我们可以做得更好的方面提供反馈!我们的博客:http://blogs.msdn.com/b/adonet/ MVC 演练:http://www.asp.net/mvc/tutorials/getting-started-with-mvc3-part4-cs
【讨论】:
非常感谢您...我当然会查看其他连接字符串 - 我一直打算在 SQL Server 上开发和托管(为什么我有一个 MSDN 子)...对于 SQL CE,我完全同意你的看法,但是,我不认为你可以告诉 MS 的其他人?...我见过的处理 MVC/EF 的每个指南都可以使用它——即使是官方的...如果您向下滚动到您链接到的页面底部 (asp.net/mvc/tutorials/getting-started-with-mvc3-part4-cs) 您将看到他们使用 SQL CE!在我的问题之后,我决定用它来过上轻松的生活! (1/3) (它解决了我所有的问题,直到现在!)......至于第三个要点,如果你阅读了那个链接,有点澄清......我知道/使用/喜欢管理工作室,我刚刚在此处发布了该链接,作为我目前不使用 SQL 的原因......我喜欢实时编辑我正在使用的数据/快速添加数据。我知道我可以从 Management Studio 中做到这一点,但是,我认为我应该能够直接从 Visual Studio 中做到这一点,毕竟,它连接并打开数据库并允许我做所有事情......它似乎打破了/之后失败。无论如何,(2/3) 我将阅读您的链接,并希望尝试更好的连接字符串,并希望它能解决所有这些问题。如果您因为博客/电子邮件评论而来到这里 - 非常感谢! ...(目前正在阅读您的博客!从测试版/预览版帖子中学到很多东西)(3/3)【参考方案2】:一方面,关于部署/迁移,您可能想看看http://exportsqlce.codeplex.com
另一方面,我一直在检查Microsoft SQL Server Compact 4.0 Books Online,原则上没有已知问题与数据类型有关,尽管您提到的nvarchar
的限制已得到确认。
最后,为了详细说明您可能会觉得有趣的策略Differences Between SQL Server Compact and SQL Server
【讨论】:
限制在这里 - i.imgur.com/ZmWR8.png - 基本上,Compact 版本的最大长度似乎是 4k... 它不支持 SQL 支持的 MAX。现在检查您的链接。谢谢。【参考方案3】:您需要创建一个调试和发布特定的web.config
文件:
在特定于发布的文件中,您删除了连接字符串,因此它会为您创建一个数据库。
在调试特定文件中保留连接字符串。
但是,我建议您不要使用连接字符串,而是使用 SQL Management Studio。鉴于精简版不支持您的要求,现在是切换的好时机...
【讨论】:
以上是关于尝试在没有太多运气的情况下部署实体框架代码优先应用程序?最佳部署策略?的主要内容,如果未能解决你的问题,请参考以下文章