gpt4 book ai didi

c# - 使用来自 WCF WebService 的模型

转载 作者:行者123 更新时间:2023-11-30 16:55:44 26 4
gpt4 key购买 nike

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

目前我有两个网络应用程序;一个是 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 Controller

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。这其实很重要。

最佳答案

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

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

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

这种方式更紧凑。

关于c# - 使用来自 WCF WebService 的模型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29032112/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com