您的類並不一定是相同的數據庫。爲什麼不能有一個名爲Partner的類,它具有ParnterID和PartnerName?在RoutePartner類中有一個合作伙伴屬性,而不僅僅是該ID。
Public class SomeViewModel //Used by your view
{
public RouteParnter {get; set;}
public ParnterList List<SelectListItem> {get; set;}
public static List<SelectListItem> PopulateDropdown()
{
List<SelectListItem> ls = new List<SelectListItem>();
DataTable someTable = Database.LoadParnters(); // Database is your data layer
foreach (var row in someTable.Rows)
{
ls.Add(new SelectListItem() { Text = row["PartnerName"].ToString();, Value = row["PartnerID"].ToString(); });
}
return ls;
}
}
public partial class RoutePartner
{
public Guid Id { get; set; }
[Required]
public Partner SomePartner { get; set; }
[Required]
public string RouteCompany { get; set; }
public RouteParnter(Guid id)
{
DataRow returnedRow = Database.LoadRouteParnter(id);
Id = id;
// Assuming your DataRow returned has all the info you need.
RouteCompany = row["RouteCompany"];
SomePartner = new Partner();
SomePartner.PartnerId = row["PartnerID"]; // cast to guid, just example
SomePartner.PartnerName = row["PartnerName"].ToString();
}
}
public class Partner
{
public Guid PartnerId { get; set; }
public string PartnerName { get; set; }
}
我會鬆散地耦合數據層。您可以使用ADO.NET或任何其他方式與數據庫進行通信。我通常通過創建一個參數化的構造函數(比如說帶一個ID來加載)來調用數據層。數據層返回一個DataTable,DataRow,DataSet或一個自定義對象。在構造函數中,填充RouteParnter對象的值。同樣,你可以在ViewModel中有一個List。
好主意,比我想的要好。我將如何填充Model RoutePartner?另外我還不確定如何向合作伙伴展示合作伙伴。 – Dann055
更新了一下。我沒有包含數據層,或者你將如何使用下拉菜單。基本上從數據層返回數據,將其加載到實體層中,並有一個單獨的ViewModel。 – james31rock
再次感謝您的幫助。我不明白Database.LoadRoutePartner(id)方法。那是我寫的東西,因爲Database.LoadRoutePartner()在Database類中不存在。 – Dann055