Mam ViewModel który potrzebuje danych z dwóch modeli osobowe i adres:MVC4 C# Wypełnianie danych w viewmodel z bazy
modele:
public class Person
{
public int Id { get; set; }
public string Name { get; set; }
public int Age { get; set; }
public int Gender { get; set; }
}
public class Address
{
public int Id { get; set; }
public string Street { get; set; }
public int Zip { get; set; }
public int PersonId {get; set; }
}
ViewModel jako taki
public class PersonAddViewModel
{
public int Id { get; set; }
public string Name { get; set; }
public string Street { get; set; }
}
Próbowałem kilka sposobów, aby uzyskać dane do viewmodel i przekazać go do widoku. Zostanie wyświetlonych wiele rekordów.
Moja najnowsza metoda wypełniania widoku modelu jako takie:
private AppContexts db = new AppContexts();
public ActionResult ListPeople()
{
var model = new PersonAddViewModel();
var people = db.Persons;
foreach(Person p in people)
{
Address address = db.Addresses.SingleOrDefault(a => a.PersonId == p.Id)
model.Id = p.Id;
model.Name = p.Name;
model.Street = address.Street;
}
return View(model.ToList());
}
otrzymuję komunikat o błędzie na adres address = db ... linia „EntityCommandExecutionException był nieobsługiwany przez kod użytkownika
Jak. można wypełnić model widok z wielu rekordów i przejść do widoku
ostateczne rozwiązanie:
private AppContexts db = new AppContexts();
private AppContexts dbt = new AppContexts();
public ActionResult ListPeople()
{
List<PersonAddViewModel> list = new List<PersonAddViewModel>();
var people = db.Persons;
foreach(Person p in people)
{
PersonAddViewModel model = new PersonAddViewModel();
Address address = dbt.Addresses.SingleOrDefault(a => a.PersonId == p.Id)
model.Id = p.Id;
model.Name = p.Name;
model.Street = address.Street;
}
return View(list);
}
Co jest 'db' w tym przypadku? A jakie jest przesłanie wyjątku? Czy korzystasz z Entity Framework lub LinqToSql? Bez względu na to, że 'db' ma problemy z wykonywaniem komendy pobierania danych, ale bez dodatkowych informacji, może to być cokolwiek. –
@ Brian S Używam framework entity. db jest kontekstem. – Xaxum
Dlaczego nie korzystasz z właściwości nawigacji? – lahsrah