コンテキスト:
を使用SQLite-Net Extensions
してローカル データ キャッシングを行っていXamarin
ます。iOS、Android、Windows Phone への展開を予定しています。この方法で保存したいシステム全体で使用される既存のデータ構造 (すべて共通のインターフェースを実装) があります。
問題
コード サンプルに示されているように、[ManyToOne]
属性は関係フィールドを示すために使用されます。これは動作しません。BitBucket 開発者ページで説明されているように、[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; }
}
}
}