在一個視圖模型填充數據我有兩個模型的人,地址需要數據的視圖模型:MVC4 C#從數據庫
型號:
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; }
}
視圖模型是這樣
public class PersonAddViewModel
{
public int Id { get; set; }
public string Name { get; set; }
public string Street { get; set; }
}
我嘗試了幾種方法將數據導入視圖模型並將其傳遞給視圖。將會有多個記錄返回顯示。
我最新的方法填充視圖模型,例如:
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());
}
我的地址地址= DB得到一個錯誤...... EntityCommandExecutionException的」行了未處理由用戶代碼
如何。你可以填充多個記錄視圖模型,並傳遞給視圖
最終解決方案:
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);
}
什麼是'在這種情況下db'?這個例外的信息是什麼?你在使用Entity Framework還是LinqToSql?無論'db'似乎都在執行命令來檢索數據時遇到問題,但沒有更多的信息,它可能是任何東西。 –
@Brian S我正在使用實體框架。數據庫是上下文。 – Xaxum
你爲什麼不使用導航屬性? – lahsrah