0
我正在使用UnitOfWork以及存儲庫模式。該體系結構是帶有LINQ-to-SQL類的MVVM,直接作爲模型。以下代碼片段顯示通用存儲庫,示例(城市存儲庫)和UnitOfWork類。當UnitOfWork保存時引發EntityAddedEvent
通用存儲庫:
public abstract class Repository<T> : IRepository<T> where T : class
{
protected Table<T> _objectSet;
#region Constructor
public Repository(DataContext context)
{
_objectSet = context.GetTable<T>();
}
#endregion
public virtual void Add(T entity)
{
_objectSet.InsertOnSubmit(entity);
}
}
CityRepository:
public class CityRepository: Repository<City>
{
public CityRepository(DataContext context): base(context)
{
public override void Add(City entity)
{
//Can't publish event here, because Changes
//aren't still submitted to Database
base.Add(entity);
//CityAddedEventArgs e = new CityAddedEventArgs(entity);
//if (this.CityAdded != null)
//this.CityAdded(this, e);
}
}
}
組的工作
public class UnitOfWork : IUnitOfWork
{
private readonly DataContext _context;
public UnitOfWork(DataContext context)
{
_context = context;
}
#region IUnitOfWork Members
public AddressRepository Addresses
{
get
{
if (_addresses == null)
{
_addresses = new AddressRepository(_context);
}
return _addresses;
}
}
public CityRepository Cities
{
get
{
if (_cities == null)
{
_cities = new CityRepository(_context);
}
return _cities;
}
}
public void Save()
{
_context.SubmitChanges();
//Need to Raise event here if an entity is added,
//but don't know which entity is added !
}
}
現在。我想在實體添加到數據庫時發佈事件,即在UnitOfWork.Save()方法上。對於例如如果將AddressEntity添加到數據庫中,則必須激發AddressAdded事件,並且如果將CityEntity添加到數據庫中,則必須激發CityAdded事件。但是接下來我怎麼會在SubmitChanges之後知道哪個實體被添加到數據庫中?
出版活動的唯一目的是讓ViewModel
知道,實體添加到數據庫中,現在它可以添加EntityViewModel
其ObservableCollection<EntityViewModel>
是好開始,這是我正在尋找。讓我嘗試! – Marshal