est-il possible de créer un modèle par défaut pour une énumération? J'utilise enum pour beaucoup, comme les états et je veux comparer des enums directement aux champs LINQ, mais je dois tout de même faire un typage.Énuméré avec le modèle par défaut? est-ce possible?
Répondre
La réponse était BEAUCOUP plus simple !!!
Un bon ami à moi m'a dit que c'est très simple! Jetez un oeil à cet échantillon!
public enum State:byte
{
EmailNotValidated = 0x00,
EmailValidated = 0x10,
Admin_AcceptPending = 0x40,
Active = 0x80,
Admin_BlockedAccount = 0xff
}
attention à la : BYTE partie après le nom de l'Enum ... il y a le truc que je cherchais! Mais merci à tout le monde qui essaie pour moi!
Vous devriez pouvoir avoir des propriétés dans vos objets LINQ qui ont un type enum. De cette façon, vous n'avez pas à lancer.
Alors changez simplement vos propriétés pour avoir le bon type enum et vous n'avez plus à vous soucier des moulages. Vous pouvez le faire dans le concepteur LINQtoSQL. Cliquez avec le bouton droit sur une propriété, sélectionnez "Propriétés" et définissez le type approprié dans la fenêtre Propriétés de Visual Studio.
Non, ils sont souvent tinyint car je n'ai pas plus de 5 à 20 valeurs différentes. – BerggreenDK
Dans ce cas, vous devriez juste changer leur type en le type enum ils sont réellement. LINQtoSQL gérera cela correctement. –
pardon pour ma question studpid, mais où puis-je changer leur type? – BerggreenDK
Avez-vous essayé des méthodes d'extension?
public enum MyEnum
{
First = 1,
Second = 2,
Third = 3
}
public static class Utility
{
public static string Description(this Enum e)
{
Type t = e.GetType();
DescriptionAttribute[] desc =
(DescriptionAttribute[])(t.GetField(e.ToString())
.GetCustomAttributes(typeof(DescriptionAttribute), false));
return desc.Length > 0 ? desc[0].Description : e.ToString();
}
public static byte ToByte(this Enum ai)
{
object o=Enum.ToObject(ai.GetType(), ai);
return Convert.ToByte(o);
}
}
class Program
{
static void Main(string[] args)
{
MyEnum me = MyEnum.Third;
Console.WriteLine("Value: {0}\r\nType: {1}"
,me.ToByte(),me.ToByte().GetType().ToString());
Console.ReadLine();
}
}
Il produit:
Valeur: 3
Type: System.Byte
Non, je ne l'ai pas encore, mais cela semble être beaucoup de code juste pour classer une variable? Est-ce que cette performance de frappe est de toute façon ou est la meilleure façon générale de faire le tour? J'espérais un remplacement «simple» (octet), quelque chose à propos de la syntaxe dans l'énumération ou autre chose? Pas possible je suppose ... – BerggreenDK
J'ai ajouté l'exemple de code c'est juste quelques lignes, 4 en fait;) – TheVillageIdiot
Je suis confus ... comment est-ce plus facile que le casting? C'est certainement beaucoup moins efficace, puisqu'il introduit une boîte/unbox ... –
cartes LINQ to SQL généralement gérer entiers directs et cartes chaîne (nom) exact (note : sensible aux majuscules et minuscules). Signification: écrivez votre énumération quelque part, et dans le concepteur définissez le type de propriété en tant que nom d'énumération complet: Some.Namespace.MyEnum
. Cela devrait normalement fonctionner.
Pour applications non triviales (par exemple, où la colonne est un varchar avec des valeurs mixtes cas, ou des choses comme « In Progress » [notez l'espace]), vous devrez quitter la propriété de stockage int
/varchar
(etc) et le mapper manuellement. Je fais habituellement cela en marquant comme privé et en le nommant FooStorage
, et en ajoutant une propriété de mappage dans une classe partielle:
partial class MyType {
public MyEnum Foo {
get {... mapping logic reading from FooStorage...}
set {... mapping logic, updating FooStorage...}
}
}
Le seul problème est que les requêtes LINQ ne fonctionnera contre le stockage propriété (pas propriété sur mesure).
Mon problème original est que je suis habitué à avoir des charges d'énumérations, mais quand je fais comme ceci: oTabel.State = someEnum.SomeState; Je dois l'écrire: oTabel.State = (byte) someEnum.SomeState; À chaque fois ... je ne peux pas mettre le "SomeEnum" en défaut (BYTE) -cast? – BerggreenDK
Pourquoi ne pas simplement dire au système de traiter State comme SomeEnum via le concepteur? Mais non: vous ne pouvez pas ajouter un opérateur de conversion implicite à une énumération (sauf pour 0, qui a toujours une conversion implicite). –
- 1. Valeur par défaut pour le champ dans le modèle Django
- 2. Utilisation de liaisons de modèle ASP.NET par défaut avec DateTime
- 3. Modifier le classeur de modèle par défaut dans asp.net MVC
- 4. Comment changer par défaut Droit d'auteur Modèle
- 5. ASP.NET MVC Problème avec l'aide des objets créés de réflexion avec le modèle par défaut Binder
- 6. Comment remplir le contrôle utilisé dans le modèle avec la valeur par défaut?
- 7. Modèle de site Sharepoint: Comment définir le modèle de site par défaut
- 8. Soaplib fonctionne avec des arguments par défaut
- 9. En utilisant le modificateur variable par défaut Smarty avec gettext
- 10. ASP.NET MVC - mélange personnalisé et modèle par défaut de liaison
- 11. ASP.Net MVC Simple Modifier les données du modèle par défaut
- 12. hibernate - modèle pour mapper une entité par défaut?
- 13. Making modèle de contrôle par défaut modifiable dans Expression Blend
- 14. ASP.NET MVC - ASPX avec constructeur par défaut
- 15. Modifier VWD Configuration du modèle de projet MVC par défaut
- 16. Paramètres de paramètres de modèle par défaut dans VC++
- 17. Conventions par défaut de NHibernate par défaut
- 18. Comment ouvrir un fichier avec le programme associé par défaut
- 19. Zend_Db_Table_Abstract et l'étendue par défaut
- 20. Entity Framework - Fonctions définies par le modèle
- 21. rendu modèle par défaut lorsque modèle demandé est manquant dans Rails
- 22. Paramètres par défaut des actions avec Django
- 23. empêcher une action par défaut avec IE8
- 24. possible de désactiver le concepteur XAML par défaut dans VS 2008?
- 25. modification de base de sortie de modèle par défaut avec la portée
- 26. Est-il possible de remplacer le comportement par défaut de [Authorize] dans ASP.NET MVC?
- 27. Développer le menu Drupal par défaut
- 28. Java, encodage par défaut
- 29. Modèle d'usine en C# et n'utilisant pas le constructeur par défaut
- 30. Silverlight 3 n'affiche pas le modèle par défaut d'un contrôle personnalisé
Merci pour votre temps, vous tous! – BerggreenDK