0
我對每個實體都有單獨的存儲庫類。現在我想在使用存儲庫實例的域對象上實現一些靜態方法,但是這種方法的缺點是我必須在靜態變量上存儲存儲庫實例(這在Web應用程序中不適用),或者我必須創建每個靜態方法的新實例。對此有沒有更好的方法(即用存儲庫實例在域類上實現靜態方法)?請分享你的想法。具有存儲庫的域/模型對象的靜態方法
基地存儲庫:
public abstract class AbstractRepository<TEntity> : IabstractRepository<TEntity>
where TEntity : EntityObject
{
protected CivilRegistryEntities civilContext;
public AbstractRepository()
{
civilContext = CivilRegistryEntities.Instance; // Per HTTP request singletone.
}
// Other method implementation goes here.
}
每實體存儲庫:
public class BirthReportRepository : AbstractRepository<BirthReport>
{
}
域/實體/模型對象:
public partial class BirthReport
{
//Not works well in web application.
private static BirthReportRepository repository = new BirthReportRepository();
public static BirthReport Method1()
{
return repository.SomeMethod();
}
public static BirthReport Method2()
{
return repository.SomeOtherMethod();
}
// Other methods(both static and instance) goes here.
}
存儲庫包含低級別操作(LINQ to SQL),基本存儲庫(AbstractRepository)實現基本的CRUD操作。我認爲直接在域類上處理所有方法將只是代碼的重複!好吧,IoC可能是一個不錯的選擇。 –
NaveenBhat
_simply重複code_我不確定你的意思,是好還是壞?無論如何,你可以在任何地方使用靜態方法。如果你想使用靜態方法(這可能是完全合理的),我寧願將它們放在靜態類中,這顯然是一個實用工具(或服務)類。但除此之外,我認爲保持你的語境短暫是好的做法。也保持靜態方法無狀態。 –
插入,更新select-by-primary鍵,全選,刷新是我不想在每個域對象上重複的常用方法。因此,我創建了基本存儲庫來執行這些任務和派生存儲庫,以執行其他低級任務。這些不是靜態的。 – NaveenBhat