我有两个数据库视图,Customer和CustomerOrder。我只允许使用视图而不是数据库表。我真的不需要这些表,因为我只读数据。每个CustomerOrder都有一个相应的客户。
这是我的代码:
namespace store.Models
{
public class CustomerOrderModel
{
[Key]
public String orderNumber { get; set; }
public String billingCustomerID { get; set; }
public String poNumber { get; set; }
}
public class CustomerModel
{
[Key]
public String customerID { get; set; }
public String name { get; set; }
public String address { get; set; }
}
public class StoreContext : DbContext
{
public DbSet<CustomerOrderModel> CustomerOrders { get; set; }
public DbSet<CustomerModel> Customers { get; set; }
}
}
如何连接CustomerOrder和Customer(CustomerOrder.billingCustomerID = Customer.customerID)?
我已经看到很多关于此的问题,但是大多数都连接了外键并且两个表都有相同的列名。我无法更改任何列名称。
答案 0 :(得分:0)
我会为此创建一个视图模型,其中包含您要发送到视图的字段。然后在您的控制器上填充不同表中的视图模型
var data1 = //populate first table
var data2 = //populate second table
List<Model> table = new List<Model>();
foreach(var temp in data1){
Model model = new Model();
data2select = data2.Where(x => x.CustomerID = temp.billingCustomerID);
model.ID = temp.id;
model.address = data2select.address;
etc
table.add(model);
}
编辑:
如果你只想要一个列,你应该只创建一个List而不是一个模型来使它更简单
List<string> list = new List<string>();
和foreach
list.add(temp.name); //the field that you want
list.add(data2select.name);