نوشته شده توسط
mehdi.mousavi
سلام.
من دقیقا نمیدونم هدفتون چیه، Lazy Loading یا داشتن کلاسی Singleton. یعنی آیا شما مایلید
Object مورد نظر آخرین لحظه که بهش نیاز هستش Load بشه؟ یا
همواره فقط یک Instance از کلاس مورد نظرتون ایجاد بشه و به استفاده کننده برگرده؟
پاسخ شما هر یک از دو مورد فوق باشه، کدی که نوشته اید چندان کارا نیست. چون معلوم نیست آیا قراره این کد Thread Safe باشه یا خیر و سوالات متنوع دیگه...
بنابراین لطفا ابتدا به سوالم پاسخ بدید تا بیشتر در این مورد صحبت کنیم.
موفق باشید.
هیچ یک از مواردی که شما فرمودید دلیل انجام این کار نبود.
من تو Repository یه کلاس به نام BaseRepository دارم که بقیه کلاسها از اون ارث بری می کنند. شبیه زیر:
public abstract class BaseRepository
{
protected int userID;
protected abstract BaseBusiness BusinessObject{get;}
//Get userID
public void Insert(BaseEntity entity)
{
BusinessObject.Insert(entity, userID);
}
public void Update(BaseEntity entity)
{
BusinessObject.Update(entity, userID);
}
.
.
.
{
public class ProvinceRepository : BaseRepository
{
private ProvinceBusiness _provinceBo;
protected override BaseBusiness BusinessObject
{
get { return _provinceBo ?? (_provinceBo = new ProvinceBusiness()); }
}
public List<Province> SelectAll(string SelectedColumns = "ProvinceID,Province_Title", string condition = "", string orderBy = "Province_Title", SortOrder sortorder = SortOrder.Assending)
{
return BusinessObject.GetSelectQuery(SelectedColumns, condition, orderBy, sortorder, userID).Cast<Province>().ToList();
}
public List<Province> SelectPaging( string condition, string orderBy, SortOrder sortorder, int pageNumberDesired, int rowCountOnPage, out int pageCount)
{
string SelectedColumns="[ProvinceID],[Province_Title],[Province_ConcurrencyVersion]";
return BusinessObject.GetPagingQuery(SelectedColumns, condition, orderBy, sortorder, pageNumberDesired, rowCountOnPage, out pageCount, userID).Cast<Province>().ToList();
}
.
.
.
}
BaseBusiness در کلاس BaseRepository، کلاس Parent در لایه Business است. در کلاسهای ارث بری کرده از BaseRepository هم اومدم و نمونه ساختم و....
برای این که بتونم این قسمت رو پیاده سازی کنم مجبور شدم به این طریق کدنویسی کنم.