I was originally using SQLCE first starting with LINQ to SQL and then moved to Entity Framework, but it seems that SQLCE is too inflexible. (Right now I can't even drop a table to recreate it because it says I can't remove PrimaryKeyA because it is being referenced by PrimaryKeyA... so I don't have much confidence in being able to modify it later)
I need flexibility in that the app is going to be released over many iterations and data needs to be able to change fairly easily. Newer versions of the app need to be able to read data from older versions, either directly or through a conversion.
It needs to be light-weight to deploy, under 10MB, but preferable under 5. The user will (should) not be modifying the data outside the app, and they don't need to know or care how the data's stored.
High performance isn't an issue, it's just going to be a single user's data. Right now I'm tempted to say just go with XML to leverage LINQ to XML. But I'm wondering if there's any other suggestions. I'd like something that's easily translatable to and from normal objects, would XML serialization work for this?
I guess what I'm looking for is an easy way to persist objects that can be easily updated to new versions with object changes. Performance isn't a huge issue but it should be at least tolerable for a small/medium amount of data. (Basically an electronic form of a cook book for a single user's recipes)