LINQ +轻量级数据库:我应该选择哪个db?

时间:2009-01-26 22:41:28

标签: .net database linq sqlite firebird

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

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

另外,我真的很想通过这个项目在LINQ中沾沾自喜。到目前为止,我只发现dbLINQ允许我使用SQLite或Firebird和LINQ。它目前在v0.18,所以它远离黄金时段。我已经使用dbLinq运行SQLite的测试,并且它们会传递我需要的内容。

还有另外一个LINQ for SQLite的实现,但是我找到的所有链接都以404s结束。

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

到目前为止的清单:

  • SQLite的
  • 火鸟
  • SQL Server Compact
  • VistaDB的

更新:我试用了所有版本和wrote up my impressions here 。简短版本:SQLite获胜。它是唯一具有良好GUI,无安装足迹且免费的。

6 个答案:

答案 0 :(得分: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;

答案 1 :(得分: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支持。

答案 2 :(得分:3)

我建议你看一下VistaDB。与{SQLCE和SQLite相比,它支持视图,存储过程和触发器的额外好处是exactly what you're looking。事实上,它支持在TSQL和.NET中编写过程和触发器,因此您可以利用SQL Server和.NET知识。

答案 3 :(得分:3)

SQLite的。有一个很好的GUI(自动freakin完成不少),没有安装足迹,是免费的,无论我在哪里托管网站都将工作。我知道我正在回答我自己的问题,但没有其他人只在他们的回复中提出SQLite。

重要:如果要在共享主机上运行,​​SQLite将需要使用完全信任模式的Web主机。

答案 4 :(得分:2)

SQL Server Express

答案 5 :(得分:2)

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