我有一个wcf服务,它生成loads实体框架对象(以及一些用于减轻负载的其他结构和简单类),并将它们发送到客户机应用程序。
我已经更改了两个类来实现接口,这样我就可以在应用程序中将它们作为单个对象类型引用。很像这个例子:
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
}
}