我有两个实体:Component和Attribute。组件可以具有多个属性,而属性也可以具有多个组件。该属性的值将存储在连接表“ ComponentAttribute”中。我不知道增加价值的最佳方法是什么。
public class Component
{
[PrimaryKey, AutoIncrement]
public int id { get; set; }
[ManyToMany(typeof(ComponentAttribute))]
public List<Attribute> attributes { get; set; }
}
public class Attribute
{
[PrimaryKey, AutoIncrement]
public int id { get; set; }
public string name { get; set; }
[ManyToMany(typeof(ComponentAttribute))]
public List<Component> components { get; set; }
}
public class ComponentAttribute
{
[PrimaryKey, AutoIncrement]
public int id { get; set; }
public string value { get; set; }
[ForeignKey(typeof(Component))]
public int componentId { get; set; }
[ForeignKey(typeof(Attribute))]
public int attributeId { get; set; }
}
Attribute attribute = new Attribute();
Attribute attribute2 = new Attribute();
Component component = new Component();
component.attributes.Add(attribute);
component.attributes.Add(attribute2);
this.dbConnection.Insert(attribute);
this.dbConnection.Insert(attribute2);
this.dbConnection.Insert(component);
this.dbConnection.UpdateWithChildren(component);
// After this I have to load the new ComponentAttributes and add the value manual
如果有人可以给我提示如何访问该值,那就太好了
答案 0 :(得分:1)
很遗憾,您不能这样做。
SQLite-Net-Extensions在多对多关系处理程序中使用InsertAll
方法,并且仅将标记为ForeignKey
的属性插入数据库表中。
最好的解决方法是您正在使用该问题。
通过已知数据(ComponentAttributes
和Attribute.id
)从数据库加载Component.id
实体,然后通过主键(value
更新接收到的ComponentAttribute
对象的ComponentAttribute.id
)。