Как использовать динамическую строку подключения в универсальном репозитории с unitofwork ?
моя единица работы коды:
public class UnitOfWork : IDisposable { Dent_DBEntities db = new Dent_DBEntities(PublicVariable.connectionString); private IPersonRepository _personRepository; public IPersonRepository PersonRepository { get { if (_personRepository==null) { _personRepository = new PersonRepository(db); } return _personRepository; } } private GenericRepository<Pay> _payRepository; public GenericRepository<Pay> PayRepository { get { if (_payRepository==null) { _payRepository = new GenericRepository<Pay>(db); } return _payRepository; } } private GenericRepository<SchTable> _schRepository; public GenericRepository<SchTable> SchRepository { get { if (_schRepository == null) { _schRepository = new GenericRepository<SchTable>(db); } return _schRepository; } } private GenericRepository<ImageTable> _imageRepository; public GenericRepository<ImageTable> ImageRepository { get { if (_imageRepository == null) { _imageRepository = new GenericRepository<ImageTable>(db); } return _imageRepository; } } private GenericRepository<PassTable> _passRepository; public GenericRepository<PassTable> PassRepository { get { if (_passRepository == null) { _passRepository = new GenericRepository<PassTable>(db); } return _passRepository; } } public void Save() { db.SaveChanges(); } public void Dispose() { db.Dispose(); } }
& мои общие коды репозитория:
<pre>public class GenericRepository<TEntity>where TEntity:class { private Dent_DBEntities _db; private DbSet<TEntity> _dbSet; public GenericRepository(Dent_DBEntities db) { _db = db; _dbSet = _db.Set<TEntity>(); } public virtual IEnumerable<TEntity>Get(Expression<Func<TEntity,bool>>where=null) { IQueryable<TEntity> query = _dbSet; if (where!=null) { query = query.Where(where); } return query.ToList(); } public virtual void Insert(TEntity entity) { _dbSet.Add(entity); } public virtual TEntity GetById(Object Id) { return _dbSet.Find(Id); } public virtual void Update(TEntity entity) { _dbSet.Attach(entity); _db.Entry(entity).State = EntityState.Modified; } public virtual void Delete(TEntity entity) { if (_db.Entry(entity).State==EntityState.Detached) { _dbSet.Attach(entity); } _dbSet.Remove(entity); } public virtual void Delete(object Id) { var entity = GetById(Id); Delete(entity); } }
Что я уже пробовал:
как использовать строку подключения в универсальном репозитории и единице работы
Gerry Schmitz
Строки соединения обычно обрабатываются в конструкторах (с некоторой логикой); почему вы вставили их в инициализатор свойств?