در سایت بسیار خوب dotnettips.info آقای خلیلی زحمت نگارش مطلبی را تحت عنوان "پیاده سازی Row Level Security در Entity Framerwork" را کشیده اند.
http://www.dotnettips.info/post/2474/پیاده-سازی-row-level-security-در-entity-framework
در این مقاله سعی شده است روشی برای توسعه نرم افزار های Multi Tenant معرفی شود و برای اینکار از الگوی Repository استفاده کرده اند.
پیاده سازی Multi Tenant توسط repository ها امری شایع می باشد و فکر می کنم سورس کدهای برخی محصولات شرکت های معتبری نظیر همکاران سیستم هم از این روش استفاده می کنند.
اما این روش دارای نقاط ضعفی می باشد.
1. اینکه اصولا استفاده از Repository ها بر سر Entity Framework روش مناسبی نمی باشد. در اینباره پیشتر مطالبی در کانال آورده شده بود. جز موارد بسیار معدود، استفاده از Repository فقط موجب ایجاد افزونگی در ساختار کد شده و هیچ ارزشی به سیستم اضافه نمی کند.
2. در روش آقای خلیلی نمی توانیم موجودیت ها را به روش Eager Loading و یا Lazy Loading بارگذاری کنیم. چرا که در این روش ها فیلترینگی به طور خودکار اعمال نمی شود و موجب نشت اطلاعات خواهد شد. پس این قابلیت کاربردی را به راحتی از دست خواهیم داد.
3. با وجود قابلیت Interceptor ها و کتابخانه هایی نظیر DynamicFilters به نظر می رسد هر روش دیگری برای پیاده سازی Multi Tenancy موجب پیچیده شدن بیش از حد ساختار کد خواهد شد.
4. در آینده هم خواهیم دید با معرفی شدن Row Level Security در نسخه SQL Server 2016، پیاده سازی Multi Tenancy قطعا به درون ساختار SQL Server هدایت خواهد شد.
در دو پست قبلی می توانید مطالب بیشتری را در این مورد ببینید.