2012-02-09 67 views
2

我有一个空的MVC3项目。我没有添加控制器或任何视图。我在MVC项目中添加的唯一的事情就是型号 - > Employee.cs使用MVC3创建和使用WCF

我在这个班,这些属性:

[Display(Description="The admin systems group number")] 
    public string GroupNumber { get; set; } 


    [Display(Description = "The Tax ID for the group (No Dashes)")] 
    public string TaxId { get; set; } 

现在我想通过WCF服务中添加该员工的记录。我创建了一个名为相同的解决方案中的另一个项目:EmployeeHost

这是我的ServiceContract和DataContract在IService1.cs

namespace EmployeeHost 
{ 
    [ServiceContract] 
    public interface IService1 
    { 
     [OperationContract] 
     string GetData(int value); 

     [OperationContract] 
     Employee AddEmployee(Employee emp); 

     [OperationContract] 
     Employee UpdateEmployee(Employee emp); 
    } 

    [DataContract] 
    public class Employee 
    { 
     [DataMember] 
     public string GroupNumber { get; set; } 


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


    } 
} 

而这就是我在我的接口:Service1.cs

namespace EmployeeHost 
{ 
    public class Service1 : IService1 
    { 
     public string GetData(int value) 
     { 
      return string.Format("You entered: {0}", value); 
     } 

     public void AddEmployee(Employee emp) 
     { 
      //Add something to DB for emp. 
     } 

     public void UpdateEmployee (Employee emp) 
     { 
      //Update something for employee emp. 
     } 
    } 
} 

这是我到目前为止。现在我想用DBContext(EF)添加一条记录。我的下一个过程应该是什么?

+2

只是一个想法,但将WCF层和MVC应用程序部署在同一个生产服务器?因为如果他们愿意的话,你不需要同时使用WCF和MVC:a)创建一个标准的模型/业务/存储库类,它将处理EF调用,因此避免创建WCF服务,或者b)使用WCF REST和JSON,并通过javascript代码直接从客户端调用WCF。 – rsenna 2012-02-09 18:21:08

+0

我需要通过WCF添加。 – 2012-02-09 18:26:26

回答

1

的更简单的方法是这样的:

WCF:

  1. AddEmployee呼叫无论是插入EmployeeHost.Employee需要EF代码。

MVC:

  1. 创建显示表单页面视图。
  2. 在控制器上添加一个动作来显示视图。
  3. 在您的控制器上添加一个操作来处​​理来自视图的发布数据。
  4. 通过首先将Model.Employee转换为EmployeeHost.Employee,使最后一个操作调用WCF。

同样,正如我在我的评论中所说的那样,恕我直言 - 除非WCF是远程服务,部署在与Web应用程序不同的服务器中。

+0

我不能像这样添加我的服务:public class Service1:IService1,DbContext – 2012-02-09 19:13:59

+0

@Raj为DbContext创建一个独特的类,不应该像这样使用WCF服务...对不起,我会尽力找到更多信息关于EF,我以为你已经知道如何处理这个问题。 :) – rsenna 2012-02-09 19:31:56

+1

你有没有看过[ScottGu的博客](http://weblogs.asp.net/scottgu/archive/2010/07/16/code-first-development-with-entity-framework-4.aspx) ?你想要的基本上是MVC的代码优先的EF方法。请记住,你还有一层:不是让控制器操作调用EF实体,而是调用WCF,WCF调用EF实体... – rsenna 2012-02-09 19:38:40