私は自分自身を教えようとしていますので、私はモバイルアプリケーション開発にはとても新しいです。 私はしようとしているこの特定のアプリケーションのXamarinとsqlite-net(拡張機能)を使用しています。OneToManyの関係がうまく動作しないようです。
は、私は今、私の活動で、私はこのすべてが動作しているようですし、私にエラーを与えないこの
SQLiteConnection db = new SQLiteConnection(new SQLite.Net.Platform.XamarinAndroid.SQLitePlatformAndroid(), path);
db.CreateTable<Player>();
db.CreateTable<Game>();
Game game = new Game();
game.Name = "Stupid game";
Game game2 = new Game();
game2.Name = "Fun game";
Game game3 = new Game();
game3.Name = "Amazing game";
db.Insert(game);
db.Insert(game2);
db.Insert(game3);
Player player = new Player();
player.Name = name; //Getting this from a input field
db.Insert(player);
Random random = new Random();
player.GameId = random.Next(1, 3);
Game game = db.Get<Game>(player.GameId);
player.Game = game;
db.UpdateWithChildren(player);
game.Players.Add(player);
db.UpdateWithChildren(game);
のようなものを持っているOneToMany関係
class Game
{
[PrimaryKey, AutoIncrement]
public int Id { get; set; }
public string Name { get; set; }
[OneToMany(CascadeOperations = CascadeOperation.All)]
public List<Player> Players { get; set; }
public Game()
{
Players = new List<Player>();
}
}
class Player
{
[PrimaryKey, AutoIncrement]
public int Id { get; set; }
[MaxLength(8)]
public string Name { get; set; }
[ForeignKey(typeof(Game))]
public int GameId { get; set; }
[ManyToOne]
public Game Game { get; set; }
}
との2クラスがあります。これをデバッグすると、実際にプレイヤーにゲームが追加されていることがわかります。私は
List<Player> players = db.Table<Player>().ToList();
、次の文を使用して、すべてのプレイヤーを取得するにはどこかにしようとすると、私はそのプロパティを読み込むしようとすると、しかし、彼らは突然、もはやゲームを持っているし、私のプログラムがクラッシュしないでください。
私はUpdateWithChildrenとInsertWithChildrenでいくつかのことを試しましたが、役に立たないです。私が間違っていることは何か、それとも私がインストールしていないものか、それとも何か? 本当に助けに感謝します。
'WithChildren'読み込みメソッドを試しましたか? – redent84
'UpdateWithChildren'に再帰的な2番目のパラメータが必要と考えられます。存在しない場合は、 'read'メソッドで' conn.GetWithChildren(識別子、再帰的:true); ' –
Ah GetWithChildrenが本当に正しいです。ありがとう!! – Jinse