저는 모바일 앱 개발에 익숙하여 자신을 가르치려고합니다. 저는 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'에 재귀 적 두번째 매개 변수가 있다고 생각합니다. 만약 거기에 없다면'conn'GetWithChildren (식별자, 재귀 : 참)을 통해'read' 메쏘드에서 그것을해야 할 것입니다;' –
Ah GetWithChildren이 실제로 맞았습니다. 감사!! – Jinse