[英]Using a Model from a WCF WebService
不確定標題是否正確,但我會進一步解釋。
目前我有兩個Web應用程序; 一個是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。 這實際上非常重要。
您應該可以直接將其用作模型。 這樣做沒有問題。
另一件事,要進行轉換,你也可以使用Linq:
model=persons.Select(t=>new Person{
Name=t.Name,
Age=t.Age
});
這種方式更緊湊。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.