在我的數據庫中用戶表我有DataTime字段,名爲DateDeleted - 在用戶存在時爲空,並在用戶「被刪除」時設置爲適當的值。在OData中引入自定義屬性
我不知道是否有引進請將isDeleted屬性的用戶實體,以便
http://odata/service.svc/Users(1)/IsDeleted
將返回的方式取決於DateDeleted是否設置與否
我在谷歌的研究true或false沒有得到任何結果,我幾乎可以肯定,不可能通過odata來實現。我對嗎?
在我的數據庫中用戶表我有DataTime字段,名爲DateDeleted - 在用戶存在時爲空,並在用戶「被刪除」時設置爲適當的值。在OData中引入自定義屬性
我不知道是否有引進請將isDeleted屬性的用戶實體,以便
http://odata/service.svc/Users(1)/IsDeleted
將返回的方式取決於DateDeleted是否設置與否
我在谷歌的研究true或false沒有得到任何結果,我幾乎可以肯定,不可能通過odata來實現。我對嗎?
有了內置的提供者,這在WCF DS方面是不可能的。你可能能夠在EF方面做到這一點(將它作爲EF實體的屬性公開),但我不確定這是否可能。 在WCF DS端,您必須實現一個自定義提供程序才能執行此操作。不幸的是,這可能是相當多的工作。如果您有興趣,請參閱初始者:http://blogs.msdn.com/b/alexj/archive/2010/01/07/data-service-providers-getting-started.aspx。 Shawn在上面提到的是自定義提供程序接口上的方法。
嗨Vitek,感謝您關注此問題。我已經有了一個自定義數據提供者。我遇到的問題是,當我將新屬性引入實體類時,它會給我錯誤3004,要求重新生成數據庫以將此屬性作爲表中的字段添加。我必須錯過基本步驟。如果我有從EDMX模型生成的實體類 - 如何將_'IsDeleted'_屬性添加到它? – Paul
另外,只要提及,這個屬性將不得不通過odata暴露。 – Paul
您確定您有自定義提供者嗎?你真的實現了IDataServiceMetadataProvider和IDataServiceQueryProvider接口嗎?如果你這樣做,它應該相對容易修改它們以公開一個額外的計算屬性。如果你不這樣做,你只需定義一個DataService
您可以通過實現DataServiceQueryProvider.GetPropertyValue方法來指定所需的值。
的方法有兩個參數,實體對象(用戶實例)和資源屬性(在這種情況下,「請將isDeleted」)。您可以嘗試從實體對象中獲取「DataDeleted」的屬性值,並根據需要返回「IsDeleted」的值。
親愛的肖恩,謝謝你回來。我的模型是用edmx(不是代碼優先)設計的 - 有沒有辦法在edmx模型中使用這種方法?我似乎無法弄清楚在哪裏以及如何實施上述內容。感謝您的幫助 – Paul
用代碼優先這是可能的:http://stackoverflow.com/a/3870575/861716 –