使用WCF WebService中的模型

时间:2015-03-13 12:19:58

标签: c# asp.net-mvc entity-framework wcf

不确定标题是否正确,但我会进一步解释。

目前我有两个网络应用程序;一个是ASP.NET MVC 5应用程序,另一个是WCF服务。 WCF服务是包含所有业务逻辑和数据访问层的服务。为了访问我的数据库,我使用Entity Framework 6。

我正在尝试创建一个Controller,用于通过MVC应用程序访问数据库中的某些数据。它应该有常规的CRUD操作用于测试目的。我遇到的问题是因为我的DAL在WCF服务中,所以我不得不将检索到的数据从服务转换到我的ASP.NET MVC应用程序中的模型,以便显示它。

我的问题是;是否可以在我的WCF服务上使用EF生成的类作为我的ASP.NET MVC应用程序中的模型?

为清楚起见,我添加了一些代码示例;

WCF EF生成的对象

public class WCFPerson
{
    public string Name { get; set; }
    public int Age { get; set; }
}

WCF服务

[WebMethod]
public List<WCFPerson> GetAllPersons()
{
    using (var db = new SomeDbcontext())
    {
        return db.WCFPersons.ToList();
    }
}

ASP.NET MVC模型

public class Person
{
    [Required]
    public string Name { get; set; }

    [Required, RegularExpression("([0-9]+)")] 
    public int Age { get; set; }
}

ASP.NET MVC控制器

public class PersonController : Controller
{
    private WCFService.WebServiceClient client = new WCFService.WebServiceClient();

    public ActionResult Index()
    {
        var persons = client.GetAllPersons();
        var model = new List<Person>();

        //My problem:
        foreach (var person in persons)
        {
            model.Add(new Person() { Name = person.Name, Age = person.Age });
        }

        return View(model);
    }
}

我觉得这个演员非常讨厌。想象一下数据库发生变化的情景,nuff说。此外,这个例子很小 - 我目前的模型有大约15个属性,并且非常讨厌这些属性。

我没有机会直接将数据库连接放在MVC应用程序中。它必须出于特定原因而在WCF服务中。 如果有可能,我已经完成了

编辑1:添加了DataAnnotations。这实际上非常重要。

1 个答案:

答案 0 :(得分:2)

您应该可以直接将其用作模型。这样做没有问题。

另一件事,要进行转换,您也可以使用Linq:

model=persons.Select(t=>new Person{
                          Name=t.Name,
                          Age=t.Age
                          });

这种方式更紧凑。