は、たとえば、WHO_TYPES、私はID
とWHO_TYPE_NAME
に列を制限したいです。WCF OData Servicesで出力列をフィルタリングする方法は?指定されたエンティティセットの場合
実体が公開されて自分自身を設定し、経由:
config.SetEntitySetAccessRule("WHO_TYPES", EntitySetRights.AllRead);
...ので、私は、エンティティ/テーブルアクセスルールを設定するときにこれを行う方法を見ることができません。これを達成するためにQueryInterceptorを記述することは可能ですか?もしそうなら、どうですか?
が私が作った別の試みは、カスタムオブジェクトを参照するカスタムメソッドを書くことです:
[DataServiceKey("MY_WHO_TYPES")]
public partial class MY_WHO_TYPES
{
public MY_WHO_TYPES() { }
public int MY_WID { get; set; }
public string MY_WNAME { get; set; }
}
私のカスタムメソッド:この試みでは
[WebGet]
public IQueryable<MY_WHO_TYPES> GetWhoTypesCustom()
{
var whoCustom = from w in this.CurrentDataSource.WHO_TYPES
select new MY_WHO_TYPES() { MY_WID = w.ID, MY_WNAME = w.WHO_TYPE_NAME };
return whoCustom.AsQueryable<MY_WHO_TYPES>();
}
、私は次のエラーメッセージが表示されます:
Unable to load metadata for return type 'System.Linq.IQueryable`1[DAL.Models.MY_WHO_TYPES]' of method 'System.Linq.IQueryable`1[DAL.Models.MY_WHO_TYPES] GetWhoTypesCustom()'.
私はある種のリポジトリパターンが応答bu私はこれがもっと簡単になると思っています。
タプルを使用してのsuggestionは良い音が、私はそれを実装する方法や戻り値の型がどうなるかはかなりよく分からない:
:私は単に匿名型を返す試みたselect new { Tuple<int, string> (w.ID, w.WHO_TYPE_NAME)}; // error: Invalid anonymous type member declarator. Anonymous type members must be declared with a memeber assignment...
次
[WebGet]
public IQueryable GetWhoTypesCustom()
{
var whoCustom = from w in this.CurrentDataSource.WHO_TYPES
select new { w.ID, w.WHO_TYPE_NAME };
return whoCustom;
}
この問題は、IQueryable型が定義されていないことを示すエラーが発生することです。