Я пытаюсь использовать SQLite Net Extensions, чтобы сделать приложение для заметок в играх, оно использует 3 уровня моделей, Game [1 has many *] Character [1 has many *] Note [1 applies to *] Character
Я использую Xamarin в Visual Studio Community 2015 и установил SQLiteNetExtensions с помощью диспетчера пакетов NuGet.
Я еще не прошел первый уровень отношений между Game и персонажем, и вставка в базу данных (через начальную вставку с последующим обновлением или рекурсивное использование InsertWithChildren) не обновляет персонажей в объекте Game. Это просто приводит к нулевому объекту для List<CharacterModel>
внутри GameModel. Однако и игра, и персонажи вносят это в базу данных.
Абстрактная базовая модель
public abstract class IdentifiableModel
{
[PrimaryKey, AutoIncrement]
public int Id { get; set; }
}
Модель игры
[Table("Game")]
public class GameModel : IdentifiableModel
{
[MaxLength(64)]
public string Name { get; set; }
[OneToMany]
public List<CharacterModel> Characters { get; set; }
}
Модель персонажа
[Table("Characters")]
public class CharacterModel : IdentifiableModel
{
[ForeignKey(typeof (GameModel))]
public int GameId { get; set; }
[ManyToOne]
public GameModel Game { get; set; }
public string FullName { get; set; }
public string ShortName { get; set; }
}
Чтобы проверить вставку в базу данных, я делаю это в своем основном действии:
var game =
new GameModel
{
Name = "Game"
};
database.Insert(game);
var characters = new List<CharacterModel>
{
new CharacterModel
{
FullName = "Dude"
},
new CharacterModel
{
FullName = "Dudette"
}
};
database.InsertAll(characters);
game.Characters = characters;
database.UpdateWithChildren(game);
var testGame = database.GetAll<GameModel>().FirstOrDefault();
var testCharacter = database.GetAll<CharacterModel>().FirstOrDefault();
Console.WriteLine(testGame.Id + " " + testGame.Name);
Console.WriteLine(testCharacter.Id + " " + testCharacter.FullName + " " + testCharacter.GameId);
//testGame.Characters; // THIS IS NULL.
//testCharacter.Game; // THIS IS NULL.
Я не понимаю, с чего начать сортировку этого, и был бы признателен за помощь в его настройке и запуске.
Изменить. Использование ненаследственного первичного ключа вообще не имело никакого значения. По-прежнему нет данных в testGame.Characters
или testCharacter.Game
Id
в расширенном классе. - person Tom 'Blue' Piddock   schedule 20.01.2016