0

私はエンティティ フレームワークを使用しており、wcf サービスを介していくつかのメソッドを公開したいと考えています。

私はこの機能を持っています(CSページで)

 using (ICRMEntities oContext = RemClient.Create<ICRMEntities>())                
     oContext.FindByKey<DataLib.Models.CRM.ActivitySLA>("ActivitySLA", SLAID); 

この関数の内容は

   public static T FindByKey<T>(this IQueryable<T> oQuery, int keyValue) where T : EntityObject, ISimpleBaseClassMD
        {
            return oQuery.FindByKey<T>(keyValue, null);
        }

WCF サービスで次のように定義されたインターフェイス:

public interface ICRMEntities : IDisposable, IContextWithUser
    T FindByKey<T>(string sObjectTypeCode, int keyValue, bool bRequestValue) where T : EntityObject, ISimpleBaseClassMD;

WCF のこのジェネリック メソッドには問題があります。このメソッドをラップしてこの機能を保存するにはどうすればよいですか?

4

1 に答える 1

3

それはいけません。

WCF サービスを介してジェネリック メソッドを公開することはできません。使用するタイプを定義する必要があります。これは SOAP の制限です。

ただし、基本クラスを戻り値の型として作成KnownTypeし、サービスに属性を追加して、このサービスが返すことができる派生クラスを定義することができます。

に似たもの;

[KnownType(typeof(SomeClass))]
public interface ICRMEntities : IDisposable, IContextWithUser
    EntityObject FindByKey(string sObjectTypeCode, int keyValue, bool bRequestValue)
于 2013-02-07T12:01:04.737 に答える