我刚刚开始关注oData并开始研究WCF数据服务。所以我要的可能不合逻辑。我已经实现了基本的东西,比如从实体框架公开数据并使用客户端消费它。
现在我想做其他CRUD操作(创建,更新,删除)并做一些其他业务逻辑,但问题是我不明白在哪里编写代码。现在我所拥有的是SVC文件,其代码如下:
public class OdataPOCService : DataService< POCEntities>
{
// This method is called only once to initialize service-wide policies.
public static void InitializeService(DataServiceConfiguration config)
{
config.SetEntitySetAccessRule("*", EntitySetRights.AllRead);
config.DataServiceBehavior.MaxProtocolVersion = DataServiceProtocolVersion.V2;
}
}
我在WCF上工作已经过去了,但实在无法理解我应该在哪里编写我们用于在Operation Contract中编写的代码。
有点无法完成图片。基本问题是:
一些代码教程或博客确实会有所帮助。
答案 0 :(得分:1)
我通常会像这样放置我的代码(假设我们的测试模型是BankAccountModel
):
[ServiceContract]
public interface IBankAccountService {
[OperationContract]
BankAccountModel Insert( BankAccountModel item );
[OperationContract]
BankAccountModel Update( BankAccountModel item );
[OperationContract]
void Delete(string ID);
//... interface of other methods
}
这是服务合同。公开此内容,描述如何使用您的服务,但没有业务逻辑。 然后创建一个接口:
的类public class BankAccountService : IBankAccountService {
public BankAccountModel Insert( BankAccountModel item )
{
// business logic for insert
}
public BankAccountModel Update( BankAccountModel item )
{
// business logic for update
}
public void Delete(string ID)
{
// business logic for delete
}
}
这将是您的后端/业务逻辑。不要暴露这个课程。客户没有(也不允许)知道这里有什么。
要传递BankAccountModel
之类的复杂对象,您必须将其定义为DataContract
,并将要序列化的属性定义为DataMember
。简单的例子:
[DataContract]
public class BankAccountModel {
[DataMember]
public string Code { get; set; }
[DataMember]
public string Type { get; set; }
// ...
}