আমি এই টিউটোরিয়ালটি অনুসরণ করেছি যা দুর্দান্ত কাজ করেছে, যতক্ষণ না আমি আমার DbContext
অতিরিক্ত কন্সট্রাক্টর হিসাবে পরিবর্তন করেছি । রেজোলিউশনে আমার এখন সমস্যা রয়েছে এবং এটি ঠিক করতে কী করা উচিত তা নিশ্চিত নই। প্যারামিটারলেস কনস্ট্রাক্টরটিকে ধরতে বাধ্য করার কোনও সহজ উপায় আছে বা আমি এটি ভুলভাবে কাছে যাচ্ছি?
DbContext
দুটি কনস্ট্রাক্টর সহ:
public class DashboardDbContext : DbContext
{
public DashboardDbContext() : base("DefaultConnection") { }
public DashboardDbContext(DbConnection dbConnection, bool owns)
: base(dbConnection, owns) { }
}
SiteController
কন্সট্রাকটর:
private readonly IDashboardRepository _repo;
public SiteController(IDashboardRepository repo)
{
_repo = repo;
}
সংগ্রহস্থলের প্রয়োগ:
DashboardDbContext _context;
public DashboardRepository(DashboardDbContext context)
{
_context = context;
}
UnityResolver
কোড:
public class UnityResolver : IDependencyResolver
{
private readonly IUnityContainer _container;
public UnityResolver(IUnityContainer container)
{
_container = container;
}
public object GetService(Type serviceType)
{
try
{
return _container.Resolve(serviceType);
}
catch (ResolutionFailedException)
{
return null;
}
}
public IEnumerable<object> GetServices(Type serviceType)
{
try
{
return _container.ResolveAll(serviceType);
}
catch (ResolutionFailedException)
{
return new List<object>();
}
}
public IDependencyScope BeginScope()
{
var child = _container.CreateChildContainer();
return new UnityResolver(child);
}
public void Dispose()
{
_container.Dispose();
}
}
WebApiConfig:
var container = new UnityContainer();
container.RegisterType<IDashboardRepository, DashboardRepository>(new HierarchicalLifetimeManager());
config.DependencyResolver = new UnityResolver(container);
ওয়েবএপি কল থেকে ত্রুটি:
System.InuthorOperationException: 'SiteController' টাইপের একটি নিয়ামক তৈরি করার চেষ্টা করার সময় একটি ত্রুটি ঘটেছে। নিশ্চিত হয়ে নিন যে নিয়ামকটির প্যারামিটারলেস পাবলিক কনস্ট্রাক্টর রয়েছে।
at System.Web.Http.Dispatcher.DefaultHttpControllerActivator.Create(HttpRequestMessage request, HttpControllerDescriptor controllerDescriptor, Type controllerType)
at System.Web.Http.Controllers.HttpControllerDescriptor.CreateController(HttpRequestMessage request)
at System.Web.Http.Dispatcher.HttpControllerDispatcher.SendAsyncCore(HttpRequestMessage request, CancellationToken cancellationToken)
at System.Web.Http.Dispatcher.HttpControllerDispatcher.<SendAsync>d__0.MoveNext()
অভ্যন্তরীণ ধারণা: সিস্টেম.আরগুমেন্টএক্সেপশন: টাইপ করুন 'ড্যাশবোর্ড.ওয়েব.কন্ট্রোলারস.সাইটকন্ট্রোলার'-এ ডিফল্ট কনস্ট্রাক্টর নেই।
at System.Linq.Expressions.Expression.New(Type type)
at System.Web.Http.Internal.TypeActivator.Create[TBase](Type instanceType)
at System.Web.Http.Dispatcher.DefaultHttpControllerActivator.GetInstanceOrActivator(HttpRequestMessage request, Type controllerType, Func`1& activator)
at System.Web.Http.Dispatcher.DefaultHttpControllerActivator.Create(HttpRequestMessage request, HttpControllerDescriptor controllerDescriptor, Type controllerType)
টিউটোরিয়ালটি দুর্দান্ত ছিল এবং আমি দ্বিতীয় কনস্ট্রাক্টর যোগ না করা পর্যন্ত আমার পক্ষে ভাল কাজ করে চলেছে।
SiteController
?
DbContext
?
SiteController
জানিয়ে দিচ্ছে যে প্যারামার্টলস কনস্ট্রাক্টর অবশ্যই থাকতে হবে, নাDashboardDbContext
।