2016-03-15 2 views
0

Je voudrais écrire une simple relation bi-univoque entre mes modèles. Le message d'exception que j'obtiens de sqlite-net est Don't know about Profile.Comment écrire une relation OneToOne simple?

public class User 
{ 
    [PrimaryKey] 
    public int pk { get; set; } 

    public string first_name { get; set;} 

    [OneToOne] 
    public Profile profile { get; set;} 

    ... 
} 

public class Profile 
{ 
    [PrimaryKey] 
    public int pk { get; set; } 

    [ForeignKey(typeof(User))] 
    public string UserID { get; set; } 

    [OneToOne] 
    public User user { get; set;} 
} 

Que manque-t-il ici? Merci

+1

Pourquoi UserId est un 'string' lorsque votre User pk est' int ' – Daniel

+0

Cela ne fait pas de différence. – Saphire

Répondre

1

Vous pouvez voir le code source here, cette exception est levée sur la ligne 2044. Si vous examinez la fonction, vous verrez qu'il vérifie si le type C# est pris en charge et renvoie le type SQL approprié.

Le type de profil que vous essayez d'ajouter n'est pas pris en charge car il s'agit d'un type personnalisé que vous avez créé et ainsi sqlite-net ne peut pas connaître le type SQL à renvoyer pour ce type. Essayez et remodelez votre code afin que la relation OneToOne soit uniquement requise pour les types pris en charge.

+0

Merci! Est-ce que je ne peux pas avoir 'sqlite' créer une table de relations automatiquement? – Saphire

+0

Je crains de ne pas être un expert dans ce domaine, mais il semble que d'après la réponse [ici] (http://stackoverflow.com/a/29005182/6017401) il puisse y avoir un moyen de faire ce que vous voulez. exiger. – ChrisS