Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/257.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使用MVC3创建和使用WCF_C#_Wcf_Asp.net Mvc 3_Model View Controller_C# 4.0 - Fatal编程技术网

C# 使用MVC3创建和使用WCF

C# 使用MVC3创建和使用WCF,c#,wcf,asp.net-mvc-3,model-view-controller,c#-4.0,C#,Wcf,Asp.net Mvc 3,Model View Controller,C# 4.0,我有一个MVC3项目是空的。我没有添加控制器或任何视图。我在MVC项目中添加的唯一内容是Model->Employee.cs namespace EmployeeHost { public class Service1 : IService1 { public string GetData(int value) { return string.Format("You entered: {0}", value);

我有一个MVC3项目是空的。我没有添加控制器或任何视图。我在MVC项目中添加的唯一内容是Model->Employee.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.
       }
    }
}
我在这个类中有以下属性:

    [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

这些是我在IService1.cs中的ServiceContract和DataContract:

    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)添加一条记录。我的下一个过程是什么?

更简单的方法是:

周转基金:

  • 使
    AddEmployee
    调用插入
    EmployeeHost.Employee
    所需的任何EF代码
  • MVC:

  • 创建用于显示表单页面的视图
  • 在控制器上添加用于显示视图的操作
  • 在控制器上添加一个操作,用于处理视图中发布的数据
  • 通过首先将
    Model.Employee
    转换为
    EmployeeHost.Employee
    ,使最后一个操作调用WCF

  • 同样,正如我在评论中所说,这在IMHO中没有多大意义,除非WCF是一个远程服务,部署在与web应用程序不同的服务器上。

    只是一个想法,但是WCF层和MVC应用程序会部署在同一个生产服务器上吗?因为如果他们愿意,您不需要同时使用WCF和MVC:只需a)创建一个标准模型/业务/存储库类来处理EF调用,从而避免创建WCF服务,或者b)使用WCF REST和JSON,并直接从客户端调用WCF,通过javascript代码。我需要通过WCF添加。我不能像这样添加我的服务:公共类Service1:IService1,DbContext@Raj为DbContext创建一个不同的类,WCF服务不应该这样使用。。。很抱歉,我将尝试查找有关EF的更多信息,我以为您已经知道如何处理此问题。:)你看了吗?您尝试使用MVC实现的基本上是代码优先的EF方法。请记住,您还有一层:不要让控制器动作调用EF实体,而是让它调用WCF,WCF调用EF实体……谢谢。我来看看。