2014-01-16 7 views
0

У меня есть два вида базы данных, Customer and 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 и клиентов (CustomerOrder.billingCustomerID = Customer.customerID)?

Я видел много вопросов об этом, но большинство из них соединяют внешние ключи и имеют одинаковые имена столбцов для обеих таблиц. У меня нет возможности изменить любое из имен столбцов.

+0

вы смотрели в ForeignKeyAttribute? http://msdn.microsoft.com/en-us/library/system.componentmodel.dataannotations.schema.foreignkeyattribute(v=vs.110).aspx –

ответ

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); 
} 

Edit:

, если вы хотите только один столбец, вы должны, вероятно, просто создать список вместо модели, чтобы сделать его проще

List<string> list = new List<string>(); 

и в Еогеасп

list.add(temp.name); //the field that you want 
list.add(data2select.name); 
+0

Что делать, если мне нужна только одна строка (заказ клиента)? – janinaj

+0

для одной строки Я бы просто определил список строк и добавил к нему, см. Мое редактирование –

Смежные вопросы