连接具有不同列名称的两个表

时间:2014-01-16 17:55:00

标签: entity-framework

我有两个数据库视图,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)?

我已经看到很多关于此的问题,但是大多数都连接了外键并且两个表都有相同的列名。我无法更改任何列名称。

1 个答案:

答案 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);