我正在创建一个简单的应用程序,客户端需要与服务器通信才能执行简单的任务。服务器由数据库和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服务返回List<Data.Scheduling>
,为什么会出错?我想阻止客户端对数据库进行排队,因为它们只执行非常简单的操作(数据库只有2个表)。
答案 0 :(得分:1)
WCF通过公开合同来工作。因为您使用ADO.NET数据模型,所以您将获得自动生成的“部分”类。它们没有标记为DataContract
或DataMember
,WCF需要它们才能在客户端工作。不管怎样,您需要将部分类复制到新的类/文件中并添加属性,以便它们显示在客户端上。
[DataContract]
public partial class Entity1
{
[DataMember]
public int Id { get; set; }
[DataMember]
public string Property1 { get; set; }
[DataMember]
public string Property2 { get; set; }
}
答案 1 :(得分:0)
这是令人困惑的问题。您创建CRUD WCF调用,客户端调用CRUD函数。服务与数据库对话。客户谈到服务。客户端不与数据库通信。