Внешний ключ всегда возвращает 0

#xamarin #sqlite-net-pcl

Вопрос:

У меня есть таблица «Встреча», в которой хранятся данные и есть 2 внешних ключа. Один для идентификатора клиента и один для стилиста. Я создал таблицу с помощью ExecuteScalarAsync, чтобы я мог создать внешний ключ самостоятельно, потому что, если бы я использовал CreateTable, внешний ключ был бы просто некоторым числом без ограничений (например, у меня мог бы быть идентификатор клиента 5, даже если бы у меня не было клиента с идентификатором 5).

Теперь я хочу вытащить из своего стола несколько встреч, и мне нужен идентификатор клиента для отображения данных с помощью a .Где функция и все работает нормально, но идентификатор клиента и идентификатор стиля равны 0, даже если в моей базе данных они установлены правильно. Я использую монитор устройства Android для проверки своих данных.

Это моя база данных для записи на прием

 public static async Tasklt;Appointmentgt; Get(int id)  {  await Init();  try  {  var aux = await db_appointments.Tablelt;Appointmentgt;().Where(e =gt; e.id == id).FirstOrDefaultAsync();  return aux;  }  catch (Exception e)  {  Log.Error("ERROR getting the appointment from databasen"   e.Message   "n"   e.StackTrace);  return null;  }  }  

и это моя база данных

введите описание изображения здесь

и если я попытаюсь запросить свою встречу по идентификатору пользователя, я получу исключение с нулевой ссылкой, но если запрос по идентификатору, мой идентификатор пользователя и идентификатор стиля равны 0

олсо моя модель

 [PrimaryKey, AutoIncrement]  public int id { get; set; }   [ForeignKey(typeof(User)), OneToOne(CascadeOperations = CascadeOperation.All)]  public int UserId { get; set; }   [ForeignKey(typeof(Stylist)), OneToOne(CascadeOperations = CascadeOperation.All)]  public int StylistId { get; set; }  public string UserName { get; set; }  public string StylistName { get; set; }   //public DateTime StartsAt { get; set; }  //public HairType HairType { get; set; }  //public Todo Todo { get; set; }  public float Cost { get; set; }  public int Duration { get; set; }  public DateTime AppointmentCreated { get; set; }  public DateTime AppointmentAnswered { get; set; }  public Status Status { get; set; }  

Комментарии:

1. Не могли бы вы поделиться с нами минимальным проектом baisc для тестирования ? Вы можете загрузить его на github и прикрепить ссылку здесь.