上下文:
我们SQLite-Net Extensions
使用Xamarin
. 我们计划部署到 iOS、Android 和 Windows Phone。我们在整个系统中使用了现有的数据结构(都实现了一个通用接口),我们希望以这种方式存储这些数据结构。
问题
如代码示例所示,[ManyToOne]
属性用于表示关系字段。这不起作用。如BitBucket Developer Page所述,该[ForeignKey]
属性可用于指定外键关系。这似乎只支持一个int
. 我们能否在不复制 Id 字段的属性的情况下轻松调整我们的结构以支持这些关系。例如,以下是不可取的。
[ForeignKey(typeof(Address))]
public int AddressId { set; get; }
[ManyToOne]
public Address Address
{
set { address = value; }
get { return address; }
}
代码示例
using SQLite.Net.Attributes;
using SQLiteNetExtensions.Attributes;
namespace Data
{
[Table("Client")]
public class Client : IData
{
private int id = -1;
private Address address = null;
public Client() { }
public Client(int id)
{
this.id = id;
}
[PrimaryKey, AutoIncrement, Column("_id")]
public int Id
{
set { id = value; }
get { return id; }
}
[ManyToOne]
public Address Address
{
set { address = value; }
get { return address; }
}
}
[Table("Address")]
public class Address : IIdentifiable
{
private int id = -1;
private string someFields = "";
public Address() { }
public Address(int id)
{
this.id = id;
}
[PrimaryKey, AutoIncrement, Column("_id")]
public int Id
{
set { id = value; }
get { return id; }
}
public string SomeFields
{
set { someFields = value; }
get { return someFields; }
}
}
}