0

Entity Framework オブジェクト (および負荷を軽減するために使用される他の構造体や単純なクラス) を生成し、それらをクライアント アプリケーションに送信する WCF サービスがあります。

2 つのクラスを変更してインターフェイスを実装し、アプリケーションでそれらを単一のオブジェクト タイプとして参照できるようにしました。この例によく似ています: Entity Framework によって生成されたプロパティにインターフェイスを実装することを強制することは可能ですか?

ただし、ネットワーク経由で送り返されるオブジェクトで直接参照されないため、インターフェイス タイプは WCF サービス プロキシ クライアントの thingymebob に追加されません。

したがって、サービス プロキシ クラスを使用するアプリケーションでは、インターフェイスをキャストまたは参照できません。

私が見逃しているアイデアはありますか?

コード例を次に示します。

//ASSEMBLY/PROJECT 1 -- EF data model

namespace Model
{
    public interface ISecurable
    {
        [DataMember]
        long AccessMask { get; set; }
    }

    //partial class extending EF generated class
    //there is also a class defined as "public partial class Company : ISecurable"
    public partial class Chart : ISecurable
    {
        private long _AccessMask = 0;
        public long AccessMask
        {
            get { return _AccessMask; }
            set { _AccessMask = value; }
        }

        public void GetPermission(Guid userId)
        {
            ChartEntityModel model = new ChartEntityModel();
            Task task = model.Task_GetMaskForObject(_ChartId, userId).FirstOrDefault();
            _AccessMask = (task == null) ? 0 : task.AccessMask;
        }
    }
}

//ASSEMBLY/PROJECT 2 -- WCF web service
namespace ChartService
{
    public Chart GetChart(Guid chartId, Guid userId)
    {
         Chart chart = LoadChartWithEF(chartId);
         chart.GetPermission(userId); //load chart perms
         return chart; //send it over the wire
    }
}
4

1 に答える 1

1

インターフェースは、WSDL 内で個別のエンティティとして認識されることはありません。インターフェースを公開するオブジェクトにメソッドとプロパティが追加されるだけです。

達成したいことは、抽象クラスを使用して実行できます。これらは別個のエンティティとして認識されます。

幸運を。続行することを決定した方法をお知らせください。

于 2009-05-20T21:44:53.507 に答える