SQLite-net-extensions, дублирующие дочерние объекты
У меня есть вопрос, касающийся SQLite-net-extensions. Надеюсь, что кто-нибудь может мне помочь, так как я немного отчаялся по этому поводу. У меня есть два класса, которые связаны отношениями многие-к-одному: TodoItem и Devices. Каждый TodoItem может содержать несколько устройств; но одно устройство может быть настроено только в одном TodoItem.
При чтении базы данных я сначала прочитал таблицу TodoItem с помощью метода (GetAllWithChildren) и заметил, что TodoItem имеет список KnxDevices. Отлично. Но затем я прочитал таблицу Devices, и она также имеет свойство TodoItem. Отлично.
Однако TodoItem в устройстве не соответствует ни одному объекту в списке TodoItems, он является его копией (если я изменяю свойство TodoItem в устройстве, соответствующий TodoItem в таблице TodoItem не изменяется).
Есть ли способ в SQLite-net-extensions читать таблицу, но без дублирования связанных объектов?
Это мой класс устройства:
public class Device
{
private string description;
private Status status;
private Supplied supplied;
private TodoItem task;
[PrimaryKey, AutoIncrement]
public int Id { get; set; }
public string Description
{
get
{
return this.description;
}
set
{
if (this.description != value)
{
this.description = value;
NotifyPropertyChanged("Description");
}
}
}
public Status Status
{
get
{
return this.status;
}
set
{
if (this.status != value)
{
this.status = value;
NotifyPropertyChanged("Status");
}
}
}
public Supplied Supplied
{
get
{
return this.supplied;
}
set
{
if (this.supplied != value)
{
this.supplied = value;
NotifyPropertyChanged("Supplied");
}
}
}
[ForeignKey(typeof(TodoItem))]
public int TaskId { get; set; }
[ManyToOne]
public TodoItem Task
{
get
{
return this.task;
}
set
{
if (this.task != value)
{
this.task = value;
NotifyPropertyChanged("Task");
}
}
}
}
Это класс TodoItem:
public class TodoItem
{
string name;
string description = "";
List<Device> _devices = new List<Device>();
[PrimaryKey, AutoIncrement]
public int Id { get; set; }
public string Name
{
get
{
return this.name;
}
set
{
if (this.name != value)
{
this.name = value;
NotifyPropertyChanged("Name");
}
}
}
public string Description
{
get
{
return this.description;
}
set
{
if (this.description != value)
{
this.description = value;
NotifyPropertyChanged("Description");
}
}
}
[OneToMany(CascadeOperations = CascadeOperation.All)] // One to many relationship with Device
public List<Device> Devices
{
get
{
return this._devices;
}
set
{
if (this._devices != value)
{
this._devices = value;
NotifyPropertyChanged("Devices");
}
}
}
}