Comment créer des colonnes binaires dans la base de données en utilisant le générateur de schéma de SubSonic? Donc, ce soir, j'ai décidé de plonger dans SubSonic. Je vois beaucoup de questions ici et de bonnes réponses de Rob et de beaucoup d'autres. Je vois que SubSonic est un ORM, avec les T4 Templates il peut générer des classes très belles et efficaces à partir d'une base de données existante.SubSonic généré DB Schema, les types binaires?
Mais, je veux aller dans l'autre sens. J'ai un très riche domaine, et je veux créer mes tables adhoc à partir de mon domaine en utilisant SubSonic et l'option RunMigrations. Tout fonctionne très bien (a même écrit ma propre fonction Upgrade() qui détecte si la base de code a été modifiée en fonction du numéro de révision de l'assembly, puis migre toutes les mises à jour de l'objet vers la base de données. DB).
Mais, comment SubSonic crée-t-il des colonnes binaires? Peut-être que je ne l'utilise pas comme prévu (je n'utilise pas Query ou SqlQuery, juste l'interface Linq de SimpleRepository). Voir ci-dessous (en utilisant un exemple "Blog post" commun):
[SubsonicTable]
public class Post
{
[SubSonicPrimaryKey]
public Int32 PostID { get; set; }
[SubSonicStringLength(1024)]
public String Title { get; set; }
[SubSonicLongString]
public String Body { get; set; }
[SubSonicStringLength(5)]
public String? LangaugeCode { get; set; }
public DateTime? Published { get; set; }
public PostType PostType { get; set; }
public Int32 PostTypeID
{
get
{
return this.PostType.GetHashCode();
}
set
{
Enum.Parse(typeof(PostType), value.ToString());
}
}
public Byte[] Image { get; set; }
}
public enum PostType
{
NotSet = 0
,BlogPost
,Comment
,Trackback
,Pingback
}
Lorsque cet objet Post est enregistré ou interrogé, via le SimpleRepository, il manque deux colonnes: PostType (ou type ENUM PostType) et l'image (de type byte [] array).
Maintenant, j'ai trouvé le hack-of-an-answer ici que quelqu'un a posté sur l'utilisation d'un PostTypeID Int32 pour contourner le problème enum. Allez Rob, SubSonic devrait être capable de supporter les types d'énumération en INT, et en revenir. ;) C'est pourquoi j'ai le PostTypeID, et cela est créé et écrit correctement.
Voici un exemple de la commande qui crée la table Poste pour moi, ainsi que l'insertion du premier message:
REMARQUE: Vous ne devez pas utiliser ce code dans la production, comme les RunMigrations a beaucoup de requêtes TSQL supplémentaires en première exécution.
Vous pouvez voir par l'exemple ci-dessus que cela créera la table Posts si elle n'existe pas, ainsi que la création des colonnes. Mais, cela ne crée pas les deux colonnes mentionnées ci-dessus: PostType ni Image.
Pensées? Et merci d'avance.
Excellent Rob! Je me demandais si vous accepteriez de contribuer au projet. Je cherchais Subsonic pour remplacer la version de CreateDatabase() de Linq, qui n'a pas de chemin de migration. Il y a d'autres colonnes à, telles que Enums (int), Xml, et autres. Choses que Linq soutient richement. Je vais essayer de rapprocher Subsonic de ceux-ci. :) Merci! – eduncan911
Mais bien sûr - c'est comme ça que nous grandissons :). Regardez ceci: http: //www.subsonicproject.com/docs/Submit_Patch Je pourrais utiliser toute l'aide que vous pouvez donner ... –