SQLite-Net-Extensions을 사용하고 있습니다. 내 Accounts
모델을로드 할 때 캠페인 이름에 액세스 할 수 있도록 Campaign
도 포함되도록 OneToOne
관계를 정의하려고합니다.SQLite 및 SQLite-Extensions가 OneToOne 관계를 수행 할 수 없습니다.
문제는 Accounts.Campaign
입니다. 항상 null
입니다. 두 테이블 모두에 데이터가 있습니다.
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; }
}
}
:
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
);
내 모델입니다 :
여기 SQLite는 내 테이블입니다 내가 accounts
계정 데이터를 검사 할 때 ...
var accounts = this.db.Query<Account>("SELECT * FROM accounts JOIN campaigns ON accounts.CampaignID = campaigns.ID");
을 ...
var accounts = this.db.Query<Account>("SELECT * FROM accounts");
그리고이 또한 시도
var accounts = this.db.Table<SMA.Models.Accounts>().ToList();
:
나는 모든 계정을 가져 오기 위해 다음 코드를 실행 거기에 있지만 Accounts.Campaign
은 null
입니다. 나는 내가 뭘 잘못하고 있는지 보지 못한다.
'GetAllWithChildren'을 사용할 수 없습니다. 나는 this.db = new SQLiteConnection (새로운 SQLiteConnectionString (this.dbFileName, true) .ConnectionString)을 호출한다. SQLite-Net-Extensions 연결 방법을 사용해야합니까? – BugHunterUK
@BugHunterUK SQLite-Net Extensions는 표준 sqlite.net 연결 클래스를 확장하므로 연결이 제대로 작동해야합니다. SQLiteNetExtensions.Extensions 네임 스페이스를 가져 와서 확장 메서드를 가져오고 있습니까? – redent84
연결을 만들기 위해'SQLite.Net' 대신'SQLite'를 사용하고있었습니다. 이제 잘 작동합니다. – BugHunterUK