私はSQLite-Net-Extensionsを使用しています。モデルがロードされたときにキャンペーン名にアクセスできるようにOneToOne
関係を定義しようとしています。Accounts
Campaign
問題はAccounts.Campaign
常にnull
です。両方のテーブルにデータがあります。
これがSQLiteの私のテーブルです:
CREATE TABLE `campaigns` (
`Id` INTEGER PRIMARY KEY AUTOINCREMENT,
`Name` TEXT UNIQUE
);
と
CREATE TABLE `accounts` (
`Id` INTEGER PRIMARY KEY AUTOINCREMENT,
`CampaignId` INTEGER,
`MobileNumber` TEXT UNIQUE,
`Password` TEXT
);
以下は私のモデルです:
namespace SMA.Models
{
[SQLite.Table("accounts")]
class Accounts
{
[PrimaryKey, AutoIncrement]
public Int32 Id { get; set; }
[ForeignKey(typeof(Campaigns))]
public Int32 CampaignId { get; set; }
[MaxLength(11)]
public string MobileNumber { get; set; }
[MaxLength(50)]
public string Password { get; set; }
[OneToOne("Id")]
public Campaigns Campaign { get; set; }
}
}
と
namespace SMA.Models
{
[Table("campaigns")]
class Campaigns
{
[PrimaryKey, AutoIncrement]
public Int32 Id { get; set; }
[MaxLength(50)]
public string Name { get; set; }
}
}
次のコードを実行して、すべてのアカウントを取得します。
var accounts = this.db.Table<SMA.Models.Accounts>().ToList();
また、試してみました...
var accounts = this.db.Query<Account>("SELECT * FROM accounts");
と ...
var accounts = this.db.Query<Account>("SELECT * FROM accounts JOIN campaigns ON accounts.CampaignID = campaigns.ID");
accounts
アカウントのデータを調べると、そこにAccounts.Campaign
はありnull
ます。私は自分が間違っていることを見ることができないようです。