我的模型看起来如下:
public partial class RoutePartner
{
public Guid Id { get; set; }
[Required]
public Guid PartnerId { get; set; }
[Required]
public string RouteCompany { get; set; }
}
partnerId来自另一个具有Id和Name的TABLE。我正在尝试构建我的CRUD表单以加载合作伙伴列表并使其可用于表单。这是在MVC Core中执行此操作的最佳方法吗?我看到很多.NET示例但没有CORE。
最后一点是伙伴下拉应该由存储过程填充。
由于 丹
答案 0 :(得分:0)
您的课程不必与您的数据库相同。为什么不让一个名为Partner的类具有ParnterID和PartnerName?在您的RoutePartner类中有一个Partner属性,而不仅仅是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。
答案 1 :(得分:0)
我想快速更新一下我是如何解决这个问题的。我最终为EF创建了PartnerContext。一旦创建,在需要访问列表的控制器中,我将PartnerContext.ToList()放入ViewBag,然后使用ASP帮助程序加载列表。