Здравствуйте, bin64, Вы писали:
А>>> get { return _dataService.GetObject<ChildEntity>(ChildID); }
_FR>>А внутри каждой энтити хранить ссылку на сервис разве кузяво?
B>нет. конечно же _dataService — не мембер Entity (он синглетон)
Ну по сравнению с этим уже ничего не страшно
От сабжевой проблемы тогда можно уйти очень просто: объявить методы-расширения:
public abstract class ParentEntity : BizEntity
{
public abstract Guid ID { get; set; }
public abstract Guid ChildID { get; set; }
}
static class DataMethods
{
public static ChildEntity Child(this XDataService /* тип _dataService у вас */ dataService, ParentEntity entity) {
if(dataService == null) {
throw new ArgumentNullException("dataService");
} else if(entity == null) {
throw new ArgumentNullException("entity");
}//if
return dataService.GetObject<ChildEntity>(entity.ChildID);
}
// Или даже так, если синглетон не режет глаз
public static ChildEntity Child(this ParentEntity entity) {
if(entity == null) {
throw new ArgumentNullException("entity");
}//if
return _dataService.GetObject<ChildEntity>(entity.ChildID);
}
}
_FR>>А сбрасывать кеши когда либо планируется?
B>да: пока, практически в каждой таблице в БД храниться TimeStamp
_FR>>Синхронизировать кеши будете?
B>планируем, с помощью "арбитра" (как правильно, по научному — не знаю.)
"_dataService" — это тулкитный объект? Он эти два пункта сумеет выполнить?