【问题标题】:Using a Model from a WCF WebService使用 WCF WebService 中的模型
【发布时间】:2015-03-13 12:19:57
【问题描述】:

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

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

我正在尝试创建一个控制器,用于通过 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: 添加了数据注释。这实际上非常重要。

【问题讨论】:

  • 您可以考虑使用automapper 等工具来简化此操作。
  • @StephenMuecke 会调查的,谢谢!尽管如此,它感觉更像是一种解决方法而不是解决方案。

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


【解决方案1】:

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

另外,要进行转换,您还可以使用 Linq:

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

这种方式更紧凑。

【讨论】:

  • 如果我直接用它作为模型,我还可以给它添加DataAnnotations吗?忘了在问题中提到这一点,这是我的错。我对其进行了编辑。关于 LINQ 部分,您是对的!看起来很结实。
  • 是的。您只需要确保注释对另一部分没有不良影响。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-11-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多