2017-07-17 3 views
2

Je suis encore assez novice dans ces technologies. J'ai rencontré un petit problème, et c'est un problème qui peut être résolu en écrivant du code paresseux ... mais OrmLite et ServiceStack rationalisent tellement de choses, je me demande s'il y a une meilleure façon de le faire.ServiceStack OrmLite: Utiliser la contrainte de base de données par défaut au lieu de la valeur null du modèle de données

Donc, j'ai un modèle de données:

public class cctv_camera 
{ 
    [AutoIncrement] 
    public int I_id { get; set; } 
    public string I_sid { get; set; } 
    public string C_store_id { get; set; } 
    // .... others 
} 

Ce modèle de données est mis en correspondance avec une table, cctv_camera. Un autre modèle (appelé CamDetail) est envoyé au client après certaines jointures de cette table. Nous recevons un objet CamDetail du client sur un POST pour enregistrer dans la base de données et remplir une instance de lp_cctv_camera avec les données (new lp_cctv_camera().PopulateWith(CamDetail);).

Voici la chose: la colonne I_sid est une colonne NOT NULL avec une contrainte par défaut qui génère un hachage pour cette ligne. C'est quelque chose que la base de données est responsable, donc les nouveaux éléments ne devraient pas INSERT cette colonne; il devrait être généré par la contrainte.

Y a-t-il un moyen de db.Insert(lp_cctv_camera) en ignorant cette colonne? J'ai essayé l'attribut [Ignore] sur la définition, mais nous en avons toujours besoin dans la définition pour envoyer I_sid au client. Je ne peux vraiment rien trouver dans les docs. Toute aide est appréciée!

Répondre

2

Nous avons ajouté un attribut explicite [IgnoreOnInsert] que vous pouvez utiliser pour ignorer des propriétés spécifiques sur Insert qui est available on v4.5.13 on MyGet.

Avant v4.5.13 vous pouvez utiliser l'attribut [Compute] pour obtenir le même comportement et ne pas tenir compte des champs lors des insertions, par exemple:

public class cctv_camera 
{ 
    [AutoIncrement] 
    public int I_id { get; set; } 
    [Compute] 
    public string I_sid { get; set; } 
    public string C_store_id { get; set; } 
    // .... others 
} 
+2

mythz à la rescousse. Merci beaucoup! – joh04667