У меня есть 2 таблицы Customer
и Order
Идентификатор клиента - это первичный ключ, и он имеет отношение ключа foriegn с ключом заказа. поэтому я хочу отображать клиентов в datagrid и orderd в RowDetailsTemplate, который состоит из другого datagrid.Как связать данные с entityframework с datagrid?
Ниже XAML
<Grid>
<DataGrid AutoGenerateColumns="True" Name="dataGrid1">
<DataGrid.RowDetailsTemplate>
<DataTemplate>
<DataGrid ItemsSource="{Binding Order}" AutoGenerateColumns="True"/>
</DataTemplate>
</DataGrid.RowDetailsTemplate>
</DataGrid>
</Grid>
В коде я написать следующий код
public MainWindow()
{
InitializeComponent();
SampleDBEntities1 context = new SampleDBEntities1();
dataGrid1.ItemsSource = context.Customers.ToList();
}
Здесь я не могу связать внутреннюю DataGrid.
Ниже класс Context
public partial class SampleDBEntities1 : DbContext
{
public SampleDBEntities1()
: base("name=SampleDBEntities1")
{
}
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
throw new UnintentionalCodeFirstException();
}
public DbSet<Customer> Customers { get; set; }
public DbSet<Order> Orders { get; set; }
}
Ниже Entityframework генерируются классами для клиента и порядка
public partial class Customer
{
public int ID { get; set; }
public string Name { get; set; }
public string City { get; set; }
public virtual Order Order { get; set; }
}
public partial class Order
{
public int ID { get; set; }
public string Number { get; set; }
public virtual Customer Customer { get; set; }
}
Я не вижу, чтобы вы привязывали View к ViewModel. Скажем, в конструкторе MainWindow добавьте эту строку - this.DataContext = new MyViewModel(). Вероятно, это будет то, что вы упускаете. –
Сначала поставьте точку останова на «context.Customers.ToList()» и посмотрите, получаете ли вы значения или нет. Если вы получаете значения, используйте snoop и проверьте, почему ваши значения не загружаются внутри Datagrids. –