I'm trying to save my objects that I got back from my JSON
into a local storage
db with SQLite
I've imported a lot of packages and also the SQLite framework.
I've also made these two classes: Activity
public class Activity : INotifyPropertyChanged
{
[SQLite.PrimaryKey, SQLite.AutoIncrement]
public int act_id
{
get;
set;
}
//The Id property is marked as the Primary Key
private int act_organization_id_value;
private int act_creator_id_value;
private int act_free_value;
private int act_subcription_value;
private int act_external_value;
private int act_active_value;
private int act_future_value;
private int act_status_value;
private int act_viewed_value;
private string act_location_value = String.Empty;
private string act_lng_value = String.Empty;
private string act_title_value = String.Empty;
private string act_information_value = String.Empty;
private string act_type_value = String.Empty;
private string act_color_value = String.Empty;
private string act_event_identifier_value = String.Empty;
private DateTime act_start_value = DateTime.Now;
private DateTime act_end_value = DateTime.Now;
[OneToMany(CascadeOperations = CascadeOperation.All)]
public List<ActivityMember> membrs { get; set; }
//Other getters and setters
}
Activity members
public class ActivityMember : INotifyPropertyChanged
{
[SQLite.PrimaryKey, SQLite.AutoIncrement]
public int mem_id
{
get;
set;
}
private int mem_activity_id_value;
private int mem_organization_id_value;
private int mem_role_id_value;
private int mem_creator_value;
private int mem_accepted_value;
private int mem_activity_accepted_value;
private int mem_active_value;
private int mem_deleted_value;
private string mem_profile_color_value = String.Empty;
private string mem_picture_value = String.Empty;
private string mem_email_value = String.Empty;
private string mem_phone_value = String.Empty;
private string mem_gsm_value = String.Empty;
private string mem_address_value = String.Empty;
private string mem_postal_value = String.Empty;
private string mem_city_value = String.Empty;
private string mem_country_id_value = String.Empty;
private string mem_first_name_value = String.Empty;
private string mem_last_name_value = String.Empty;
private string mem_extra_info_value = String.Empty;
private string mem_street_value = String.Empty;
private string mem_streetnumber_value = String.Empty;
private string mem_gender_value = String.Empty;
private DateTime mem_birthdate_value = DateTime.Now;
[ManyToOne] // Many to one relationship with Activity
public Activity activity { get; set; }
// all other getters and setters
}
An activty can have more ActivityMembers.
When I build and run I get the following error:
When I debug I found out that it is caused by the following lines: In Activity:
[OneToMany(CascadeOperations = CascadeOperation.All)]
public List<ActivityMember> membrs { get; set; }
In activityMember:
[ManyToOne] // Many to one relationship with Activity
public Activity activity { get; set; }
Any help on how correctly doing this?
EDIT I've these references:
The error is being caused by SQLite.Net trying to serialize the property with type List<ActivityMember>
, that it's a type that SQLite.Net doesn't know about. By annotating it with the SQLite-Net Extensions OneToMany
attribute, it should be ignored by SQLite.Net, because OneToMany
inherits from SQLite.Net Ignore
attribute.
If the property is not being ignored by SQLite.Net is because the Ignore
attribute is not being recognized. This issue is usually caused because you are using a different SQLite.Net version that the version against SQLite-Net Extensions was compiled. To fix this issue, you have to make sure that the versions of SQLite.Net used are the same.
To solve it you can copy the SQLite-Net Extension sources to your project to force the library to link against your version of SQLite-Net.
Response to EDIT:
As you can see in your references, you have two SQLite.Net libraries:
You have to remove the references to SQLiteNetExtensions
, SQLite.Net.Async
and SQLite.Net.Async
, and compile SQLite-Net Extensions
sources against your SQLite For Windows Phone
library.