اتصال بانک اطلاعاتی در صورتی که از چند لایه در پروژه استفاده کنیم نیاز به مراحلی برا ی من داشت
برای پروژه سه لایه تعریف کرده بودم اول لایه که 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'.