Не совсем уверен, правилен ли заголовок, но я объясню это дальше.Использование модели из WCF WebService
На данный момент у меня есть два веб-приложения; один из которых является приложением ASP.NET MVC 5, а один - службой WCF. Служба WCF - это служба, содержащая всю бизнес-логику и уровень доступа к данным. Для доступа к моей базе данных я использую Entity Framework 6.
Я пытаюсь создать контроллер для доступа к некоторым данным в базе данных через приложение MVC. Он должен иметь регулярные операции CRUD для целей тестирования. Проблема, с которой я столкнулся, заключается в том, что, поскольку мой DAL находится в службе WCF, я постоянно должен отбирать извлеченные данные из службы в модель в моем приложении ASP.NET MVC для ее отображения.
Мой вопрос: возможно ли использовать классы, созданные EF, в моей службе WCF для работы в качестве модели в моем приложении 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);
}
}
Я нахожу это литье очень раздражает. Представьте сценарий изменения базы данных, сказал Нуфф. Кроме того, этот пример невелик - моя текущая модель имеет около 15 свойств, и очень раздражает бросать их все.
Невозможно установить соединение с базой данных непосредственно в приложении MVC. Он должен быть в службе WCF по определенным причинам. Если бы это было возможно, я бы уже сделал это.
Редактировать 1: Added DataNnotations. Это на самом деле очень важно.
Вы можете посмотреть на использование таких инструментов, как [automapper] (https://github.com/AutoMapper/AutoMapper), чтобы сделать это проще. –
@ StephenMuecke Посмотрите на это, спасибо! Тем не менее, это скорее похоже на обходное решение, чем решение. –