Domanda

Io uso un WCF DataService e si desidera utilizzare pocos. Devo specificare un DataServiceKey in modo per farlo funzionare (ovviamente). Quando faccio che devo fare riferimento System.Data.Services.Client (per System.Data.Services.Common) -., Che non si sente molto POCO

C'è un modo per tenere i miei oggetti pulito e specificare la chiave da qualche altra parte?

È stato utile?

Soluzione

Se si utilizza un provider di riflessione e le vostre classi non seguono una convenzione per proprietà chiave, quindi è necessario utilizzare l'attributo DataServiceKey. fornitore di riflessione è quello che si ottiene se si limita a fornire definizioni di classe e la classe contesto al DataService. Quindi, se non si implementa IDataServiceMetadataProvider, si sta molto probabilmente utilizzando un provider di riflessione. E 'possibile utilizzare provider di riflessione senza gli attributi sulle vostre classi, ma poi il WCF Data Services applica un'euristica per capire le proprietà chiave. Va in questo modo:

  • se la classe in questione ha un proprietà chiamata ID, è un'entità con l'ID come proprietà unica chiave.
  • se la classe si chiama ad esempio Cliente e si ha una proprietà chiamata CustomerID, è un'entità con la Proprietà CustomerID come l'unica chiave Proprietà (il nome della classe è ovviamente solo come campione).

Non ci sono altre proprietà sono riconosciute come proprietà chiave senza l'attributo DataServiceKey. Questo è anche descritto per esempio in questo blog: http://blogs.msdn.com/b/alexj/archive/2010/06/11/tip-56-writing-an-odata-service-using -la-riflessione-provider.aspx

E 'possibile utilizzare il 100% classi POCO con proprietà chiave arbitrarie, ma poi si dovrà implementare un provider personalizzato. Questo è molto più lavoro poiché è necessario per definire la forma delle classi programatically. Un fornitore di campione personalizzato procedura dettagliata può essere trovato qui: http://blogs.msdn.com/b/alexj/archive/2010/01/07/data-service-providers-getting-started.aspx

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top