İlk önce, public class DatabaseFactory : Disposable, IDatabaseFactory
olarak tanımlanmış bir dbcontext fabrikam var ve zaten mevcut değilse bir bağlam yaratıyor.Tek bir fabrika örneğini birden fazla depoya nasıl işleyebilir ve nasıl kullanılır?
Sonraki, fabrikada yapıcıyı alan public class Repository<T> : IRepository<T> where T : class
tanımlanmış genel bir depo var. Bundan devraldığım başka beton depolarım var.
Ayrıca, fabrikayı yapıcıya alan ve tüm değişiklikleri (tüm havuzların kullanması gereken) fabrika içindeki içeriğe kaydeden public class UnitOfWork : IUnitOfWork
tanımlanmış bir birim iş birimim var.
Denetleyicimde, yapıcı public ProjectController(IDatabaseFactory factory, IUnitOfWork unitOfWork, IProjectRepository projectRep, IUserRepository userRep)
olarak ayarlanmış.
Temel olarak, iş birimine ve tüm depolara geçirilecek aynı fabrika örneğine ihtiyacım var. Ninject ile, tek bir örneği hepsine iletmek yerine her nesne için yeni bir fabrika oluşturur. Tek örneğe yalnızca birimin atlatılmasına izin vermenin bir yolu var mı, yoksa fabrikamı doğru bir şekilde oluşturmuyorum ve/veya doğru bir şekilde doğruyu anlamadım mı? İşte
Ninject benim bağlamaları şunlardır: varsayılan olarakNinject
Transient
kapsamını kullanması nedeniyle
kernel.Bind<IProjectRepository>().To<ProjectRepository>();
kernel.Bind<IIssueRepository>().To<IssueRepository>();
kernel.Bind<IUserRepository>().To<UserRepository>();
kernel.Bind<IDatabaseFactory>().To<DatabaseFactory>();
kernel.Bind<IUnitOfWork>().To<UnitOfWork>();
Gerçekten mi? Bu cevabı bir buçuk saat aramaya çalıştım. Tam olarak aradığım şey bu. Bu cevabı google yoluyla bulmak neden bu kadar zor olduğu hakkında hiçbir fikrim yok. Belki de ondan çok daha zorlaşmaya çalışıyordum. Tekrar teşekkürler! – snoluet
Eğer benim yazı yararlı bulduysanız bir cevap olarak kabul edebilirsiniz :) – MonkeyCoder
Ben - çok hızlı bir şekilde yanıtladı ve şimdi 4 dakika beklemek zorunda :) Teşekkür ederim. Bir saniyeniz varsa hızlı soru, eğer fabrikayı singleton olarak koyarsam - sadece tek bir örnek uygulama oluşturacak mı yoksa sadece mevcut kontrol cihazında mı olacak? IssueController için fabrikanın farklı bir örneğini ProjectController'den (ancak bu özel denetleyicinin içindeki tek bir örneği) kullanmak isterse, bunu benim için halleder mi? – snoluet