2009-06-15 5 views
6

J'ai une entité avec des champs qui sont tapés intRévéler propriétés typées ENUM pour les entités Entity Framework champs dans le contexte client service de données ADO.NET

et je veux exposés ces domaines comme des propriétés qui obtiennent et recevoir des valeurs de type ENUM pour travailler fortement typé. J'ai donc créé une nouvelle classe partielle pour l'entité et ajouté les deux propriétés.

lorsque je tente de créer une nouvelle instance de la TestEntity et l'ajouter au contexte, et appeler enregistrer les modifications que je reçois l'exception suivante:

Une erreur est survenue lors du traitement de cette demande. à System.Data.Services.Client.DataServiceContext.SaveAsyncResult.HandleBatchResponse() à System.Data.Services.Client.DataServiceContext.SaveAsyncResult.EndRequest() à System.Data.Services.Client.DataServiceContext.SaveChanges (SaveChangesOptions Options) à System.Data.Services.Client.DataServiceContext.SaveChanges()

l'exception interne est:

System.InvalidOperationException: le type 'Enum1' n'a pas de propriétés paramétrables. à System.Data.Services.Client.ClientType..ctor (Type type, chaîne typeName, Boolean skipSettableCheck) à System.Data.Services.Client.ClientType.Create (Type type, Boolean expectModelType) à System.Data. Services.Client.DataServiceContext.WriteContentProperties (writer XmlWriter, type ClientType, ressource d'objet) at System.Data.Services.Client.DataServiceContext.CreateRequestData (zone ResourceBox, nouvelle ligne booléenne) at System.Data.Services.Client.DataServiceContext.SaveAsyncResult .CreateChangeData (indice Int32, Boolean saut de ligne) à System.Data.Services.Client.DataServiceContext.SaveAsyncResult.BeginNextChange (Boolean replaceOnUpdate)

donc j'ai pensé qu'il essaie de refléter les propriétés enum en tant que propriétés des classes. comment puis-je faire en sorte que le contexte ignore ces propriétés lorsqu'il essaie d'y réfléchir. J'utilise VS 2008 team suite sp1, SQL Server 2008, .Net 3.5 Sp1.

Aide.

le code de classe partielle:

public partial class TestEntity 
{  
    public enum1 Field1 
    { 
     get 
     { 
      return (enum1)field1; 
     } 
     set 
     { 
      field1 = (Int16)value; 
     } 
    } 

    public enum2 Field2 
    { 
     get 
     { 
      return (enum2)field2; 
     } 
     set 
     { 
      field2 = (Int16)value; 
     } 
    } 
}  
+0

Avez-vous trouvé quelque chose à ce sujet? – Ram

Répondre

2

Je ne pense pas que vous pouvez. Dans ADO.Net Data Services, vous ne pouvez pas avoir d'enums sur vos objets proxy qui sont envoyés au serveur. Essayez de changer votre objet pour utiliser un int (ou short) à la place.

Questions connexes