What's a good file- or folder-based database to use with .Net (EF + Linq)?
-
A couple of programs I want to make will use a relational database for storage, but I'd like to have it:
- Well integrated with the .Net framework, specifically in the sense that it works well with EF and with Linq,
- Embedded, so users don't have to install an RDBMS or the like separately from the program itself, and
- File or folder based storage such that users can easily backup/copy the database as well as specify where it is to be stored.
SQLite seems like the obvious choice, but are there any others that would work well? (Would SQL Server LocalDB or Express fit the bill?) Having more features than Sqlite provides (stronger typing, more constraint support) would be nice.
-
@dreikin said in What's a good file- or folder-based database to use with .Net (EF + Linq)?:
A couple of programs I want to make will use a relational database for storage, but I'd like to have it:
- Well integrated with the .Net framework, specifically in the sense that it works well with EF and with Linq,
- Embedded, so users don't have to install an RDBMS or the like separately from the program itself, and
- File or folder based storage such that users can easily backup/copy the database as well as specify where it is to be stored.
SQLite seems like the obvious choice, but are there any others that would work well? (Would SQL Server LocalDB or Express fit the bill?) Having more features than Sqlite provides (stronger typing, more constraint support) would be nice.
At first I read the title as using folders as tables, and files as rows --- one of the times I was very glad to be wrong!!!!!
LocalDB has a very light weight install - but still an install.. OTOH, it can be included with your application.. https://docs.microsoft.com/en-us/sql/database-engine/configure-windows/sql-server-2016-express-localdb
SQLite could be a viable choice, but as you point out there are limited features....
There may not be (and I surely do not know of any) a solution that meets all of your desires...could be "tradeoff time"
-
@dreikin said in What's a good file- or folder-based database to use with .Net (EF + Linq)?:
SQL Server LocalDB
Still technically needs installation, though I've been working on portable-izing it on my free time....
-
@thecpuwizard said in What's a good file- or folder-based database to use with .Net (EF + Linq)?:
There may not be (and I surely do not know of any) a solution that meets all of your desires...could be "tradeoff time"
That's what I suspect will have to happen. For one of the programs using a full RDBMS is one of the intended options, but the other really doesn't need that complexity.
And from what I gather from the page you linked, @Tsaukpaetra's right: LocalDB/SQL Server Express still needs a separate install.
-
@dreikin said in What's a good file- or folder-based database to use with .Net (EF + Linq)?:
still needs a separate install.
If I'm successful, it can be set up alongside the application and just called to startup the database when required.
-
If you want an embedded database with less s than SQLite, look at Firebird.
-
@masonwheeler said in What's a good file- or folder-based database to use with .Net (EF + Linq)?:
If you want an embedded database with less s than SQLite, look at Firebird.
Does 3.0 support being an embedded DB? None of the download packages mention it in their metadata (I'm not about to download the whole thing to have a poke around) unlike with 2.5, and the main description talks about features that are important to being a database server. On the basis of that sort of information, I'd be comparing it to Postgres, not SQLite…
-
What about the one Alex's company makes whose name I can't remember right now?
EDIT: I'm thinking of another friend of mine who owns a software company, one mo...
EDIT EDIT: VistaDB: http://www.gibraltarsoftware.com/vistadb
-
@blakeyrat said in What's a good file- or folder-based database to use with .Net (EF + Linq)?:
What about the one Alex's company makes whose name I can't remember right now?
EDIT: I'm thinking of another friend of mine who owns a software company, one mo...
EDIT EDIT: VistaDB: http://www.gibraltarsoftware.com/vistadb
Looks good, but I can't afford it, especially not for the smaller, unlikely to ever be monetized, app.
VistaDB Site License with Upgrade Assurance $1,595
I suppose I should have mentioned it above, but "free or low cost" is also an important factor.
Edit: Maybe as one of the database choices for the DAM app though, although that's probably far off in the future if so.
-
@dreikin said in What's a good file- or folder-based database to use with .Net (EF + Linq)?:
Looks good, but I can't afford it, especially not for the smaller, unlikely to ever be monetized, app.
Quality software costs money.
Good luck.
-
@blakeyrat said in What's a good file- or folder-based database to use with .Net (EF + Linq)?:
@dreikin said in What's a good file- or folder-based database to use with .Net (EF + Linq)?:
Looks good, but I can't afford it, especially not for the smaller, unlikely to ever be monetized, app.
Quality software costs money.
Good luck.
Generally true. And I don't object to paying if it's worth it. I just, quite simply, can't afford it right now.
-
@blakeyrat said in What's a good file- or folder-based database to use with .Net (EF + Linq)?:
What about the one Alex's company makes whose name I can't remember right now?
EDIT: I'm thinking of another friend of mine who owns a software company, one mo...
EDIT EDIT: VistaDB: http://www.gibraltarsoftware.com/vistadb
-
@dkf said in What's a good file- or folder-based database to use with .Net (EF + Linq)?:
Does 3.0 support being an embedded DB? None of the download packages mention it in their metadata (I'm not about to download the whole thing to have a poke around) unlike with 2.5, and the main description talks about features that are important to being a database server. On the basis of that sort of information, I'd be comparing it to Postgres, not SQLite…
Yes. In 2.5, you had two different client DLLs for embedded vs. server mode; in 3,
fbclient.dll
can handle both. Maybe that's why they don't specifically mention the distinction?And yeah, it's a real database, not a SQLite-grade toy. It's just a real database that can be run embedded.
-
OF course there is always https://sourceforge.net/projects/dbase/ and similar <<ducking and running>>
-
@masonwheeler said in What's a good file- or folder-based database to use with .Net (EF + Linq)?:
Maybe that's why they don't specifically mention the distinction?
They appear to not want to push that feature (as in not mentioning it obviously in their documentation for the current release). It's “obviously” not important to them any more; the embedded case appears to be an afterthought.
The max size of Firebird databases is surprisingly small.
Also, some of their docs are a bit funny in places:
Nice title!
-
@dkf said in What's a good file- or folder-based database to use with .Net (EF + Linq)?:
The max size of Firebird databases is surprisingly small.
Google tells me that it's 32TB, which, granted (after looking up others) is relatively tiny, but shouldn't be a problematic limitation for an embedded DB.
-
@boomzilla said in What's a good file- or folder-based database to use with .Net (EF + Linq)?:
Google tells me that it's 32TB, which, granted (after looking up others) is relatively tiny, but shouldn't be a problematic limitation for an embedded DB.
And until they get around to making 32 TB physical discs, its max size is essentially no different from any other database, given the way a database's performance tends to be heavily optimized for running on real hardware, and any virtualization tricks tend to hurt, and the bigger it gets the more it hurts...
-
@blakeyrat said in What's a good file- or folder-based database to use with .Net (EF + Linq)?:
EDIT EDIT: VistaDB: http://www.gibraltarsoftware.com/vistadb
Wow. Did that name age poorly.
"Let's jump on that Windows Vista bandwagon, WCGW?"
-
@masonwheeler said in What's a good file- or folder-based database to use with .Net (EF + Linq)?:
And until they get around to making 32 TB physical discs, its max size is essentially no different from any other database, given the way a database's performance tends to be heavily optimized for running on real hardware, and any virtualization tricks tend to hurt, and the bigger it gets the more it hurts...
I'm no DBA but I don't think that's true at all. AIUI, you can do all sorts of fancy stuff by sticking parts of the DB on various physical disks. This is often done to improve performance since you can read / write in parallel to multiple disks.
-
I remember using SQL Server Compact for one of my earlier projects, which is like SQLite meets SQL Server.
But that product appears to be dead. Last version that came out was the same one I used back in the day, 4.0 (in line with .NET 4.0).
-
@masonwheeler said in What's a good file- or folder-based database to use with .Net (EF + Linq)?:
And until they get around to making 32 TB physical discs
Well, since I can get a 10TB disk easily:
and a NAS — or even a standard desktop system — will merrily take a whole bunch of those, supporting reasonable sized DBs is pretty practical even for configurations that are “embedded”.