0

SQLite-Net 확장을 사용하는 Xamarin 프로젝트에서 두 개의 엔티티 인 Project와 ProjectSettings가 있습니다. 이러한 엔티티는 일대일 관계입니다. 프로젝트 엔티티에 자동 증가 ID가 있습니다. 처음 프로젝트를 저장하면 프로젝트의 ID가 자동으로 설정됩니다. 이것은 잘 작동합니다. SQLite-Net 확장을 사용하여 일대일 관계로 엔티티를 자동으로 설정합니다.

public class Project 
{ 
    [PrimaryKey, AutoIncrement] 
    public int Id { get; set; } 

    [OneToOne(CascadeOperations = CascadeOperation.All)] 
    public ProjectSettings Settings { get; set; } 
} 

ProjectSettings를 들어, 나는 ProjectId이 프로젝트 테이블의 아이디 (외래 키)와 동일한 지 기대.

public class ProjectSettings 
{ 
    [PrimaryKey, ForeignKey(typeof(Project))] 
    public int ProjectId { get; set; } 
} 

그러나 Project를 유지 한 후에 ProjectSettings 테이블의 ProjectID는 0입니다. database.InsertOrReplaceWithChildren(project)을 사용하여 프로젝트를 지속하고 있습니다. Project와 ProjectSettings는 모두이 메서드를 호출 할 때 Id = 0을가집니다.

저는 SQLite-Net을 처음 접했기 때문에 주석을 잘못 사용하고 있는지 또는 수동으로 ProjectSettings 키를 올바르게 설정해야하는지 궁금합니다.

답변

1

AutoIncrement 기본 키가있는 InsertOrReplace을 SQLite.Net과 함께 사용할 수 없습니다. 항상 ID 0 인 오브젝트를 대체합니다. 다른 삽입 메소드를 사용하거나 수동으로 기본 키를 지정하십시오.

관련 문제