EasyDatabase - Temporarily Removed

[This asset has been temporarily removed from the asset store to solve issues related with a 3rd-party library when building for mobile. I’m sorry for any inconvenience this may have caused you.]

What is EasyDatabase?

EasyDatabase is a multi-platform .NET library that provides a simple and easy way to create and manage local databases on your projects, using classes as tables and properties as columns.

EasyDatabase was created with a set of goals in mind:

  • Provide a clean, effortless and multi-platform API with
  • Write Once, Run Anywhere (WORA) functionality featuring
  • Automated processes everywhere it can

What it does

  • Converts classes into SQL tables

  • Builds SQL queries from LINQ or equivalent methods

  • Transactional operations

  • Provides both sync and async operations

  • Defines relationships between tables

  • Optional automatic updates

How easy is it?

Define relationships and constraints with attributes and use simple methods to access the database.

Take a look at the documentation to see how it works and what else it has to offer.

Where do I find it?

You can find EasyDatabase in the asset store here.

This asset is still under development. New features are planned and some bugs might need fixing. Please help me make it better by submitting any problem or suggestion you might have to the issue tracker.
If you’re able to test on any platform that is still untested, I would appreciate any feedback you can give me, wether it works or not.

Feel free to ask anything or leave any thoughts.

This asset looks amazing and looks to solve with ease several data storage issues I’ve experienced in a few projects. I do see that PSM / Vita is omitted from your list of platforms on the Asset Store page, are you able to comment further on the possible usage for this platform?

Hi lorenalexm,

I’ve been looking for an answer to you but, unfortunately, I couldn’t find a definitive one.

The only thing that could prevent EasyDatabase from working would be the SQLite database on which it relies. I’ve found some people saying it works, others saying it probably doesn’t.
According to Wikipedia, the PS Vita OS is “based on FreeBSD and NetBSD”. Both of them are listed here as systems that include SQLite, so I’d say there’s a good possibility that it works.

I have no knowledge about building for this platform but I haven’t found anything else that could be a game-stopper. Assuming that SQLite database works, if the console accepts a full .NET 3.5 library and Unity can compile with the full .NET 2.0 compatibility level (the subset is currently not supported), I can’t see why it shouldn’t work. Having said that, I cannot guarantee that it works and will keep it out of the supported platforms list until positive confirmation.

I will keep looking for an answer and will download the Unity version with the Vita module to try to build the example with it and see if something shows up.

Meanwhile, if you have some information that might help, feel free to leave it here.

Thank you,
João Farias

Adding to my previous answer, I’ve downloaded the Unity PSM version and found some incompatibilities related to JSON. I’ve fixed it (see below) and I managed to successfully build a PSM project. Unfortunately, I don’t own a Vita and have no way of testing whether it works or not.

Improvements

Seeing as JSON was creating incompatibilities with PSM and, from what I found, could also be incompatible with iOS, I decided to ditch it entirely. I was only using JSON to serialize objects to strings and vice-versa, so I wrote my own serializer that still creates JSON-formatted strings but in a much simpler way. This brought two big improvements:

  • The EasyDatabase.dll file size was reduced by almost 500Kb;
  • EasyDatabase is now compatible with the .NET 2.0 subset

These changes will be on the first update that I’ll submit in the next couple of days.

Thank you for taking the time to look into PSM support, and the time spent adding in these improvements. I’m glad to read you were able to reduce the file size of the library and offer support for the .NET 2.0 subset. You can count yourself another customer within short order!

Thank you!
I’m just running a few more tests to make sure my new serializer is up to the challenge. I expect to submit the update tomorrow but I’ll let you know when I do.

Update - 0.9.1.x

The new update has been submitted and should go live during this week. It brings the two changes I’ve talked about before: reduced file size and .NET 2.0 subset compatibility.

JSON Serializer

I’ve replaced the JSON serializer with a custom serializer focused on (de)serializing (from)to string. This is used to store objects in a string column instead of having a dedicated table. It’s very useful to store collections or objects to which you don’t have source code access and couldn’t therefore create a table.

Most of the strings generated are valid JSON objects but for the sake of functionality and simplicity, there are a few cases where it might not be compatible. For example, JSON only accepts dictionaries with string keys but EasyDatabase accepts any object as key. Consequently, the string generated by EasyDatabase is not a valid JSON string. This is only important if you want to use the strings generated by EasyDatabase elsewhere. If you want to provide EasyDatabase with a JSON string, it should be able to handle it correctly.

The serializer supports any value and single object but there are a few limitations to which collections it accepts. If you want to use a collection that is not supported let me know and I’ll add it in as soon as possible.
Currently, the following collections are supported:

Apart from these, any strongly typed (generic) collection implementing the IDictionary or IList interface should work.

I hope you like these changes.

Version 0.9.1.x is now live!
Get it here.

I’m currently adding support for asynchronous “Select” operations, like I’ve talked about here, to hopefully include in the next update.

Hi all!

I just submited version 0.9.2 for review and it should be available in the next few days. This version brings:

  • New feature: Support for asynchronous load (Select) calls
  • Bugfix: TextBlob columns now correctly handle multi-dimensional arrays
  • The example provided with the package has been updated

To further improve this asset, I’d like to know your opinion. What features do you want/need when working with an SQL database?

Version 0.9.2.x is now live and comes with a promotional price of only 25$!
Get it here.

EasyDatabase is now compatible with Unity 5!

I also took the chance to make it compatible with older versions to support a wide range of Unity versions. You can now enjoy EasyDatabase if you use Unity 3.5.0 or higher.

You can find EasyDatabase in the asset store here.

Is there a source version available?

Hi rcalt2vt, not at this point. This project is still in development and, apart from any bugs that might still be found, I want to add a few more features in the future. Only then, when it’s complete, would I possibly release it with source code.

May I ask why would you want the source code? Is there any feature/improvement you’d like to have?

Working at a studio, what tends to happen is a bug or feature is needed and management doesn’t like hearing: “We sent in the bug/feature request and waiting to hear back.”

That’s understandable. I’ll look into adding the source code in a future release. It looks like something more people would want. Thank you.

Hello jfarias, and congratulations for your nice job.
As soon as you’ll add Windows Phone/Store support, I’m automatically going to click the “Buy” button. :slight_smile:
Please don’t stop developing it, and keep up the good work.

1 Like

I Just bought this asset and feel like it lacks documentation, I went through the current docs and found that they aren’t sufficient

Hi Corum, I’m sorry for the late response. I must have missed the notification.
Unfortunately, the framework that connects WP/Store apps with the SQLite database is in its early stages and lacks some features. On top of that, I’ll need to convert the current project from .net3.5 to .net4.5/Universal App.
I’m sorry, but you shouldn’t expect this to happen anytime soon.

Hi NoEnd, thank you for buying this asset and I’m sorry if the docs aren’t enough. Could you tell me what, exactly, isn’t sufficient? Is it the setup, the API, … ?
If you have a specific question, feel free to ask.

a Hello world example would be good to cover Select/Insert/Update/Delete functions.

How to validate if a table exists? to prevent migration
Give example of use for each API, not just the syntax.

Dear @jfarias I need your help with this. I can’t build my iOS 64bit apps using your extension.

This is the error IL2CPP error for type 'PostSharp.ImplementationDetails_78a1c9b8.<>z__Multicast' in assembly