Sto creando un servizio OData con WCF Data Services utilizzando un EDMX. Come posso creare una proprietà calcolata per un tipo di entità, in modo che il suo valore venga calcolato nel servizio (C#) e non provenga dal database?
Il valore di questa proprietà si basa sul valore di altre proprietà, che sono mappate ai campi nel database.Come creare una proprietà calcolata in Data Services (OData)?
risposta
La soluzione che ho trovato è l'utilizzo di Entity Framework Code First invece di un EDMX. Permette di creare proprietà calcolate semplicemente creando proprietà standard nel codice.
Ecco un esempio:
public class Person
{
public String FirstName { get; set; }
public String LastName { get; set; }
public String FullName
{
get { return FirstName + " " + LastName; }
}
}
Se si sta esponendo il file EDMX direttamente, utilizzando il provider Entity Framework predefinito per Data Services, qualcosa di simile:
public class MyService: DataService<MyEntities> {
Poi, purtroppo, non è possibile esporre eventuali 'nuovi' proprietà che non sono nel modello EDM di Entity Framework sottostante.
Avendo detto che ci sono altre opzioni, è possibile scrivere un fornitore di riflessione o un fornitore personalizzato che aggiunge la proprietà extra e delega la maggior parte del lavoro a EF sotto il cofano.
Il problema sta configurando tutta la delegazione NON è facile oggi.
Questo series of posts spiega i provider e mostra come creare un servizio basato su provider personalizzato e questo one shows come creare un servizio utilizzando il fornitore di Reflection.
Grazie Alex. Contrassegnerò la tua risposta come risposta accettata, sebbene abbia trovato una soluzione più semplice: invece di usare un EDMX, utilizzo dapprima il codice di Entity Framework; mi ha permesso di creare proprietà calcolate semplicemente creando proprietà nel codice. Lo documenterò in un post sul blog. – Fabrice
- 1. espandersi in proiezione (Seleziona) per WCF Data Services (OData)
- 2. Proprietà di sola lettura OData
- 3. Come consumare un oggetto complesso da una sproc usando WCF Data Services/OData?
- 4. OData: data "Maggiore di" filtro
- 5. Ottieni anno di creazioneCon data in una colonna calcolata
- 6. Proprietà calcolata Vue.js non funzionante
- 7. Collection esiste Criteri di WCF Data Services
- 8. Come si crea una proprietà calcolata e filtrata?
- 9. Compressione Odata - C'è QUALSIASI supporto? (WCF Data Services 5.0 per WinRT)
- 10. somma di una colonna calcolata in foreach
- 11. OData - filtro per proprietà nidificata
- 12. Definire una proprietà calcolata su un oggetto expando
- 13. Forzare l'aggiornamento di una proprietà calcolata con limitazione
- 14. errore di richiesta con WCF Data Services
- 15. JPA - colonna calcolata come proprietà della classe di entità?
- 16. Creazione di una colonna calcolata in SQL Server 2008
- 17. WebApi OData per sicurezza utente sulla proprietà
- 18. Come si dichiara che una proprietà calcolata "getta" in Swift 2?
- 19. Come creare dinamicamente una nuova proprietà
- 20. Impossibile creare misura o colonna calcolata in Power BI
- 21. Ordine sqlalchemy per colonna calcolata
- 22. OData su API Web: come interrogare le proprietà annidate?
- 23. Come disattivare schemi di autenticazione per WCF Data Services
- 24. Come si aggiunge una colonna calcolata al modello EF4?
- 25. Escludi proprietà dalla risposta WebApi OData (EF) in C#
- 26. In SQLAlchemy, come posso creare una colonna "Data MySQL"?
- 27. Come contare le occorrenze di una colonna calcolata in SQL?
- 28. Colonna calcolata basata su un'altra colonna calcolata?
- 29. Come creare una proprietà senza accessori in Kotlin?
- 30. Come creare una classe, sottoclasse e proprietà in Lua?
Purtroppo, è adatto solo per Reflection Provider che fornisce servizi di generazione dati in sola lettura. –