4

我正在启动一个新的 Web 应用程序。它将托管在对 SQL Server 收取额外费用的服务上,坦率地说,我认为该站点不需要那么多数据库。现在数据模型是 5 个表。如果有史以来最大的表有 10k 条记录,我会感到惊讶。

所以我想保持数据库轻量级。SQLite最初引起了我的兴趣,因为我需要为 Android 学习它。但是缺少外键让我畏缩。当然可以实现一些看起来像外键约束但感觉不相关的东西。Firebird似乎是唯一支持 FK 的轻量级(免费)数据库。

另外,我真的很想通过这个项目在 LINQ 中涉足。到目前为止,我只发现dbLINQ可以让我将 SQLite 或 Firebird 与 LINQ 一起使用。它目前是 v0.18,所以离黄金时间还很远。我已经使用 dbLinq 对 SQLite 进行了测试,它们通过了我需要的测试。

SQLite 还有另一种 LINQ 实现,但我为它找到的所有链接都以 404 结尾。

那么对于与 LINQ 兼容的轻量级数据库,我有哪些选择?SQL Server 的任何紧凑版本都已发布,除非有一个可以 XCOPY 部署且无需安装代理/服务的版本?我不能要求主机安装新软件,因为我怀疑他们会这样做,并且我希望该应用程序具有高度便携性(就托管而言)。

到目前为止的清单:

  • SQLite
  • 火鸟
  • SQL Server 紧凑型
  • 维斯塔数据库

更新:我尝试了所有版本并在这里写下我的印象。简短版本:SQLite 胜出。它是唯一一款具有良好 GUI、无需安装空间且免费的软件。

4

6 回答 6

4

您可以在现有数据库上按原样使用 LINQ to SQL,只要您可以创建标准IDbConnection对象。

这是在 Firebird DB 上使用 LINQ 的一些代码。

DbProviderFactory dbProvider = DbProviderFactories
    .GetFactory("FirebirdSql.Data.FirebirdClient");

DbConnection connection = dbProvider.CreateConnection();
connection.ConnectionString = "some connection string";

DataContext linqContext = new DataContext(connection);

var query = from something in linqContext.GetTable<SomeType>() 
            select something.someproperty;
于 2009-01-27T13:38:49.093 回答
3

SQL Server Compact Edition ( http://en.wikipedia.org/wiki/SQLCE ) 支持 LINQ 和所有其他 VS 工具,内置于 VS 2008 中,支持 FK,并且可以使用数据库的平面文件进行 XCOPY 部署。但是请注意,它也不是没有注意事项,很多东西,如视图或嵌套查询都会失败,如果你开始让数据库大小变得非常大(即 50MB+),它可能会变得非常臃肿。

如果您在此处使用 SQLite .NET 提供程序 ( http://sqlite.phxsoftware.com/),SQLite也会更好,它也可以与 LINQ 一起使用,并且具有基本的 VS 支持。

于 2009-01-27T06:18:59.590 回答
3

我建议你看看VistaDB。与 SQLCE 和 SQLite 相比,它支持视图、存储过程和触发器的额外优势将完全满足您的需求。事实上,它支持在 TSQL 和 .NET 中编写过程和触发器,因此您可以利用您的 SQL Server 和您的 .NET 知识。

于 2009-01-27T06:59:50.303 回答
3

SQLite。具有良好的 GUI(具有自动怪异完成功能),没有安装足迹,是免费的,并且无论我在哪里托管网站都可以使用。我知道我在回答我自己的问题,但没有人在他们的回复中只使用 SQLite。

重要提示:如果您想在共享主机上运行 SQLite,则需要使用完全信任模式的网络主机。

于 2009-02-01T20:54:26.010 回答
2

SQL Server 速成

于 2009-01-26T22:56:39.313 回答
2

如果您要在共享主机上运行您的网站(几乎所有这些都不允许您在完全信任模式下运行您的网站),并且如果您需要简单的启用 x-copy 部署的网站,VistaDB 是唯一的选择。

于 2009-03-25T18:37:36.007 回答