استفاده از چند لایه پروژه و اتصال بانک اطلاعاتی

2/18/2018 MVC
825

اتصال بانک اطلاعاتی در صورتی که از چند لایه در پروژه استفاده کنیم نیاز به مراحلی برا ی من داشت 

برای پروژه سه لایه تعریف کرده بودم اول لایه که MODEL (برای نگهداری کلاسهای code first و context) بود دوم لایه ای که خود پروژه MVC  بود و سوم لایه api چرا که میخواستم با اضافه کردن APi  به عنوان لایه جدید از امکانات آن نیز استفاده کنم البته در این لایه کلاسهای repository  و اینترفیسهای (interfacees) هامربوطه را نیز پیاده کردم

در Model که با تصمیم داشتم کلاسهای CodeFirst  برای بانک اطاعاتی استفاده کنم و همچنین یک Context  تعریف کردم 

در پروژه MVC هم فقط قرار بود اطلاعات دریافت و نمایش داده شوند ، البته پردازش اطلاعات در لایه Repository انجام میشد (هیچ سرویسی هنوز تعریف نکرده ام )

چیزی که سخت بود در لایه در لایه Model که یک Class Library  Project  بود امکان تعریف Connection String  را نداشتم برای همین در لایه Repository که آن هم یک پروژه Class library بود در فایل App.Config رشته را تعریف کردم 

از سوی دیگر از پروژه Model یک refrence  اضافه کردم به پروژه Repository و از repository  اضافه کردم به پروژه MVC چیزی که سخت بود امکان Enable-Migration  در کدام پروژه بود و همچنین اینکه Connection String  را از کدام پروژه خواهد خواند

نتیجه enable Migration  را در Api اجرا کردم و Connection String  را از پروژه Repository خواند.

آپدیت 2: Enable Migaration  در پروژه APi  بود 

نتیجه

  • Project.Api 
    • Migration
    • Repository(پیاده سازی متدهای امضا شده در اینترفیس های موجود در پوشه Contract)
    • Contract(اینترفیسهای مرتبط با repository)
    • connection string
  • Project.Model
    • Database Classes
    • Context
    • Identity
  • Project.MVC
    • UI

 

خطاها:

InvalidOperationException: Unable to resolve service for type 'SunPie.Model.SunPieContext' while attempting to activate 'SunPie.Api.Repositories.PieRepository'.