c# WCF 与 POCO DataContract
Posted
技术标签:
【中文标题】c# WCF 与 POCO DataContract【英文标题】:c# WCF With POCO DataContract 【发布时间】:2013-10-07 16:40:30 【问题描述】:我有一个包含 3 个项目的 c# 解决方案:
-
模型(EF POCO 类)
WCF 服务
客户端(主应用)
在项目模型下我有一个模型Employee:
[Table("employee")]
public class Employee
[Key, Column("organizationid", TypeName = "uniqueidentifier", Order=0)]
public Guid OrganizationId get; set;
[Key, Column("personid", TypeName = "uniqueidentifier", Order=1)]
public Guid PersonId get; set;
[Column("jobtitle", TypeName = "nvarchar")]
public String JobTitle get; set;
[Column("active", TypeName = "bit")]
public Boolean Active get; set;
[Column("telecom", TypeName = "nvarchar")]
public String Telecom get; set;
[Column("email", TypeName = "nvarchar")]
public String Email get; set;
[Column("confidentialitycode", TypeName = "nvarchar")]
public String ConfidentialityCode get; set;
[Column("priority", TypeName = "int")]
public Int32 Priority get; set;
#region Foreign Relations
[ForeignKey("OrganizationId")]
public virtual Organization CurrentOrganization get; set;
[ForeignKey("PersonId")]
public virtual Person CurrentPerson get; set;
#endregion
然后我创建了一个名为 Test.svc 的 WCF 服务,它具有以下内容:
public class Test : ITest
public Model.POCO.Employee DoWork()
Model.POCO.Employee newItem = new Model.POCO.Employee();
newItem.PersonId = Guid.NewGuid();
newItem.OrganizationId = Guid.NewGuid();
newItem.Priority = 1;
newItem.Telecom = "";
newItem.JobTitle = "";
newItem.Email = "";
newItem.Active = true;
return newItem;
[ServiceContract]
public interface ITest
[OperationContract]
Model.POCO.Employee DoWork();
在客户端项目中,我添加了一个按钮,在点击事件中,我有以下代码:
private void button1_Click(object sender, EventArgs e)
DataReference.WCFTest.TestClient svc = new DataReference.WCFTest.TestClient();
var employee = svc.DoWork();
svc = null;
如果我查看“var employee”,我可以看到该对象在那里并且运行良好,但“employee”不是 Model.POCO.Employee 类型,而是 WCFTest。员工类型。
如何让我的 WCF 服务返回 Model.POCO.Employee?有什么解决方法吗?或者我可以将 WCFTest.Employee 自动包装到 Model.POCO.Employee 吗?
非常感谢。
【问题讨论】:
【参考方案1】:如何让我的 WCF 服务返回 Model.POCO.Employee?
确实如此,您的客户只是不知道该类型。
从您的客户端项目中引用模型项目,并确保在“配置服务引用”(或在创建一个时在高级下),在“重用类型”中检查模型程序集。
【讨论】:
太棒了!我可以为 WCF 数据服务引用做同样的事情吗? “它不起作用”我什么也做不了。请将实际的错误消息粘贴到您最喜欢的网络搜索引擎中,然后尝试找到一个问题来回答您的问题。以上是关于c# WCF 与 POCO DataContract的主要内容,如果未能解决你的问题,请参考以下文章
EDM -> POCO -> WCF (.NET4) 但传输集合导致 IsReadOnly 设置为 TRUE