ロード用のEntity Frameworkオブジェクト(および負荷を軽減するために使用される他のいくつかの構造体と単純なクラス)を生成するWCFサービスがあり、それをクライアントアプリケーションに送信します。WCFサービスでのインターフェイス定義の送信
クラスを2つ変更して、アプリケーションで1つのオブジェクト型として参照できるように、インターフェイスを実装しました。 Is it Possible to Force Properties Generated by Entity Framework to implement Interfaces?
ただし、インタフェースタイプは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
}
}
クライアントでサービスリファレンスまたはWeb参照を使用していますか?プロジェクト2のプロジェクト1を参照していますか?私はサービス参照がデフォルトで参照される型を再利用すると信じています。 – JohnOpincar
私はクライアントアプリケーションで直接サービスアプリケーションからタイプを参照していません。私は以前これを行うことについて考えていましたが、依存性を最小限に抑えるために2つのアプリケーション間の壁を保つことに決めました。私がEF/WCFプロジェクトへの参照を含めるつもりならば、それを1つのアプリとして書いただけかもしれません。 – misteraidan