2

我正在创建一个简单的应用程序,客户端需要与服务器通信才能执行简单的任务。服务器由一个数据库和一个 WCF 服务组成。客户端连接到服务和数据库。

我正在使用 ado.net 实体数据模型在数据库上创建 CRUD 操作。我想让客户端通过服务创建 CRUD 操作,并避免让客户端连接到数据库。

当我在服务上创建返回实体对象的方法时,我得到一个异常。例如我有方法:

    public Data.Scheduling[] GetSchedules()
    {
        Data.TCEntities1 entities = new Data.TCEntities1();

        var a = entities.Schedulings.ToArray();

        return a;
    }

我不想重新创建Schedulings类和其他实体类以使我的方法有效。在不让客户端连接到数据库的情况下,我如何能够通过我的 wcf 类库服务公开创建、读取、更新和删除操作?

编辑

如果它令人困惑,请对我的问题进行更多解释:

在我的服务器应用程序(wcf 服务)中,我具有基本功能以及 ado.net 实体数据类。因为我有 ado.net 实体数据类,所以我可以很容易地从数据库中提取结果,例如:

    Data.TCEntities1 entities = new Data.TCEntities1();
    var a = entities.Schedulings.ToList(); // schedulings is a table in my database

如您所见,这些行将从数据库中的表调度中检索所有调度行,并且可以使用它(我将有一个 List )。如果我的 wcf 服务返回 a ,为什么会出现错误List<Data.Scheduling>?我想防止客户端查询数据库,因为它们只是执行非常简单的操作(数据库只有 2 个表)。

4

2 回答 2

1

WCF 通过公开合同来工作。因为您使用 ADO.NET 数据模型,您将获得自动生成的“部分”类。这些没有标记DataContractDataMemberWCF 要求它们在客户端工作。一种或另一种方式,您需要将部分类复制到新的类/文件中并添加属性,以便它们显示在客户端上。

[DataContract]
public partial class Entity1
{
    [DataMember]
    public int Id { get; set; }

    [DataMember]
    public string Property1 { get; set; }

    [DataMember]
    public string Property2 { get; set; }
}
于 2012-10-20T17:30:12.147 回答
0

这是一个令人困惑的问题。您创建 CRUD WCF 调用,客户端调用 CRUD 函数。服务与数据库对话。客户与服务交谈。客户端不与数据库交谈。

于 2012-10-20T17:09:03.527 回答