Буду признателен, если кто-нибудь скажет мне, как связать список со структурой сущностей (сначала код EF).
Я использую призму и mef.Есть два вида, один с кнопкой и другой со списком.(каждый в своей области призмы).Нажав кнопку, я создаю новый объект Employee и вставляю его в базу данных через структуру сущностей.
Проблема в том, что в моем списке не отображается вновь добавленный объект Employee в списке.Что нужно изменить, чтобы сделать эту работу?
Некоторые части кода:
MainView:
<Grid>
<StackPanel>
<TextBlock Text="Hello From MainView (Core Module)" />
<ListBox ItemsSource="{Binding Employees, Mode=TwoWay}">
<ListBox.ItemTemplate>
<DataTemplate>
<TextBlock Text="{Binding FirstName}" />
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
</StackPanel>
</Grid>
MainViewModel:
namespace EmployeeViewer.Core.ViewModels
{
[Export]
[PartCreationPolicy(CreationPolicy.NonShared)]
public class MainViewModel : NotificationObject
{
private IUnitOfWork _UnitOfWork;
[ImportingConstructor]
public MainViewModel(IUnitOfWork unitOfWork) // IEventAggregator eventAggregator
{
this._UnitOfWork = unitOfWork;
Init();
}
private void Init()
{
this.Employees = new ObservableCollection<Employee>(_UnitOfWork.EmployeeRepository.Get());
//this.Employees = new BindingList<Employee>(_UnitOfWork.EmployeeRepository.Get().ToList());
}
public ObservableCollection<Employee> Employees { get; set; }
//public BindingList<Employee> Employees { get; set; }
}}
Получить метод из GenericRepository:
public virtual IEnumerable<TEntity> Get(
Expression<Func<TEntity, bool>> filter = null,
Func<IQueryable<TEntity>,
IOrderedQueryable<TEntity>> orderBy = null,
string includeProperties = "")
{
IQueryable<TEntity> query = _DbSet;
if (filter != null)
{
query = query.Where(filter);
}
foreach (var includeProperty in includeProperties.Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries))
{
query = query.Include(includeProperty);
}
if (orderBy != null)
{
return orderBy(query).AsEnumerable();//.ToList();
}
else
{
return query.AsEnumerable();//.ToList();
}
}
Через ICommand (реализовано как RelayCommand) в другом регионе и просмотре , я сначала создаю и вставляю новый объект Employee в код Entity Framework.
public ICommand AddEmployeeCommand
{
get { return _AddEmployeeCommand; }
}
private void AddEmployee()
{
_UnitOfWork.EmployeeRepository.Insert(new Employee() { FirstName = "Test", LastName = "Via cmd" });
_UnitOfWork.Save();
}