Je suis en train de travailler avec le Premier Code de la fonctionnalité de l'Entity Framework et j'essaie de comprendre comment je peux spécifier les types de données des colonnes qui doivent être créés lorsque la base de données est généré automatiquement.
J'ai un modèle simple:
public class Article
{
public int ArticleID { get; set; }
public string Title { get; set; }
public string Author { get; set; }
public string Summary { get; set; }
public string SummaryHtml { get; set; }
public string Body { get; set; }
public string BodyHtml { get; set; }
public string Slug { get; set; }
public DateTime Published { get; set; }
public DateTime Updated { get; set; }
public virtual ICollection<Comment> Comments { get; set; }
}
Quand je lance mon application, SQL CE 4.0 base de données est automatiquement créé avec le schéma suivant:
Jusqu'à présent, tellement bon! Toutefois, les données, je vais être de l'insertion dans l' Body
et BodyHtml
propriétés est systématiquement supérieure à la longueur maximale autorisée pour l' NVarChar
type de colonne, donc je veux EF pour générer Text
colonnes pour ces propriétés.
Cependant, je n'arrive pas à trouver un moyen de le faire! Après un peu de recherche sur Google et de la lecture, j'ai essayé de spécifier le type de colonne à l'aide de DataAnnotations
, à partir d'informations trouvées dans cette réponse:
using System.ComponentModel.DataAnnotations;
...
[Column(TypeName = "Text")]
public string Body { get; set; }
Cela lève l'exception suivante (lorsque la base de données est supprimée, et l'application est re-run):
Schema specified is not valid. Errors: (12,6) : error 0040: The Type text is not qualified with a namespace or alias. Only PrimitiveTypes can be used without qualification.
Mais je n'ai aucune idée de ce que l'espace de noms ou alias je dois spécifier, et je ne pouvais pas trouver quelque chose qui me le dire.
J'ai aussi essayé de changer l'annotation que par cette référence:
using System.Data.Linq.Mapping;
...
[Column(DbType = "Text")]
public string Body { get; set; }
Dans ce cas, une base de données est créée, mais l' Body
colonne est toujours un NVarChar(4000)
, il semble donc que l'annotation est ignoré.
Quelqu'un peut-il aider? Cela semble comme il devrait être assez exigence commune, et pourtant ma recherche a été vaine!