Я 3 лица закодированы в моем приложении: счета, продукта, ПокупкаВыпуск
Объект Покупка имеет счет и продукт, затем несколько других стандартных типов данных (доход, дата, количество и т.д.)
[System.Data.Linq.Mapping.Table(Name = "Purchases")]
public class Purchase
{
[Key, DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public long PurchaseId { get; set; }
public Account Account { get; set; }
public Product Product { get; set; }
public DateTime PurchaseDate { get; set; }
public decimal Revenue { get; set; }
public long Quantity { get; set; }
}
объект счета имеет ObservableCollection, и я предполагал доступ покупки и привязки к элементам управления, как это:
Account acct = db.Accounts.First(a => a.AccountId == 1);
this.dataGridView1.DataSource = acct.Purchases.ToBindingList();
Единственная проблема заключается в том, что столбец DataGrid для учетной записи и продукта не заполняется, как ожидалось. Я получаю странную версию прокси-сервера, а Продукт пуст. Смотрите ниже:
1) Что мне нужно сделать так, чтобы столбец счета заполняется ACCOUNTID и колонок продукта получает ProductId (Или еще лучше другое свойство, как ProductName)?
2) Кажется, что прямое связывание объектов EF с элементами управления с использованием .ToBindingList() (показано здесь http://msdn.microsoft.com/en-us/data/jj682076.aspx) крайне ограничено. Например, можете ли вы связать определенные столбцы и исключить других? Как насчет этого сценария, когда вы используете объект, который объединяет другие объекты? Большинство примеров привязки данных, которые я видел, довольно простые, и я не уверен, что этот подход будет соответствовать моим требованиям. Есть ли у вас какие-либо советы/ресурсы для комплексного связывания?
В итоге я нашел пример такого подхода, и он работает очень хорошо. Я новичок в платформе, и в учебнике не упоминается этот вариант. Вероятно, потому что анонимный тип не может быть записан. Однако для моих нужд это было прекрасно. – wesmantooth