【问题标题】:ASP.NET MVC 2 Embedded DatabaseASP.NET MVC 2 嵌入式数据库
【发布时间】:2010-07-10 14:52:24
【问题描述】:

我正在构建一个非常小的临时网站,需要一个小型后备商店。我在 ASP.NET MVC 2 中构建了它,并希望使用 DiscountASP 托管 - 尽管这不是必需的。

我想要一个支持 ASP.NET MVC 2、VS2010 Express、启用 LINQ(或 EF)并在共享主机上无需额外费用的后备存储。

根据我的调查,SQLCE 3.5 在 .NET 4 中不起作用 SQLCE 4,只是 CTP,在 VS2010 中不起作用 SQlite 没有任何 .NET 4.0 驱动程序。

我做对了吗?有什么好的教程或博客可以说明如何逐步完成这项工作?

谢谢, 标记

【问题讨论】:

标签: sqlite asp.net-mvc-2 embedded-database


【解决方案1】:
【解决方案2】:

我不是 ASP 专家,但您听说过 Firebird SQL 吗?具有客户端/服务器或嵌入式版本的数据库引擎,具有事务等功能,并具有 ADO.NET 提供程序

http://firebirdsql.org/dotnetfirebird/

http://firebirdsql.org/index.php?op=devel&sub=netprovider

【讨论】:

    【解决方案3】:

    不,甚至不要考虑使用嵌入在 ASP.NET 中的 firebird。

    这是严格禁止的。

    Firbird 网站上有一个参考告诉你要避免:

    是否可以在我的 ASP.NET 应用程序中使用嵌入式 Firebird?

    是的。但 Firebird ADO.NET 在应用程序工作目录中查找 fbembed.dll 文件。对于 ASP.NET 应用程序,工作目录是系统文件夹(例如 C:\WINDOWS\System32)。但这并非没有问题 link text

    在同一网站的另一个页面上:

    ASP.NET 使用一种功能来帮助防止编写不佳的 ASP.NET 应用程序阻塞整个服务器 - 它定期回收 ASP.NET 工作进程。默认情况下,IIS6 使用重叠回收,其中在旧进程停止之前启动了一个新进程,以确保运行不中断。问题是 fbembed.dll 为所有者进程独占锁定数据库,因此如果您同时运行另一个进程,则在第一个进程停止之前将无法访问数据库。您可能想接受这一点,但这确实不是最佳解决方案。

    解决方案是关闭重叠回收(通过将 DisallowOverlappingRotation 元数据库属性设置为 true)。但是,这可能会导致您的应用程序在回收期间中断。

    结论

    不要那样做 ;-)。确实,fbembed.dll **不是为处理此类使用而构建的。你可以让它工作,但这只是一个 hack。

    【讨论】:

      猜你喜欢
      • 2013-11-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-19
      • 2018-05-16
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多