簡體   English   中英

使用WCF WebService中的模型

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM