这样可以吗?
public class BaseRepository<T> where T : class
{
private readonly DbContext _dbContext;
public BaseRepository(DbContext dbContext)
{
_dbContext = dbContext;
}
public T Get(Func<T, bool> predicate)
{
return GetAll(predicate).FirstOrDefault(
我遇到了一段代码,其中我看到方法返回类型为Func<T, TResult>,我惊讶地看到这个方法返回的对象是EFRepository类型,其中EFRepository是一个泛型类,EFRepository构造函数接受DbContext类的一个实例。
protected virtual Func<DbContext, object> DefaultEntityRepositoryFactory<T>() where T : class
{
return dbContext => new EFRepository<T>(dbContex
在我当前的项目中,我使用了相当多的责任模式。
但是,我发现通过依赖项注入配置链有点尴尬。
鉴于这一模式:
public interface IChainOfResponsibility
{
IChainOfResponsibility Next { get; }
void Handle(Foo foo);
}
public class HandlerOne : IChainOfResponsibility
{
private DbContext _dbContext;
public HandlerOne(IChainOfResponsibility ne
我将所有的DBContext调用都转移到了存储库中。
public class PayAllowanceRepository
{
private static DBEntities _dbContext = new DBEntities();
public static void AddAllowance(Allowance payAllowance)
{
_dbContext.Allowances.Add(payAllowance);
_dbContext.SaveChanges();
}
public stati
我在网上寻找如何使用EF创建动态存储库,我经常看到人们将ApplicationDbContext用作私有对象。
我猜它是从DbContext派生出来的,但是仅仅使用DbContext有什么问题吗?
顺便说一句,我似乎无法添加ApplicationDbContext..我错过了什么有用的东西吗?
public class Repository<T> : IRepository<T> where T : EntityBase
{
private readonly ApplicationDbContext _dbContext;
public Reposit
我有3个sqlite数据库,每个数据库都只有一个名为"Logs“的表。
这些“日志”表有不同的列:
Database1.db日志(Id,VarA,VarB) Database2.db日志(Id,VarC,VarD)数据库3.db日志(Id,VarE,VarF)
我用EntityFramework 6对其进行了如下建模:
public class Database1Log
{
public int Id { get; set; }
public float? VarA { get; set; }
public float? VarB { get; set
我正在尝试为数据访问层创建一个存储库& UnitOfWork。在我当前的实现中,每次创建新的存储库时,我都必须修改我的UnitOfWork。我希望避免这种情况,并保留扩展存储库抽象类的功能。
下面是我的通用存储库& UnitOfWork接口和类
public interface IRepositoryBase<T> where T : class
{
IList<T> FindAll();
T FindByCondition(Expression<Func<T, bool>> expression);
vo
试图找出在使用模式时如何获取最近添加的实体的Id。举个例子就好了。这是储藏室
public class Repository<T> : IRepository<T> where T : class {
protected DbContext DbContext { get; set; }
protected DbSet<T> DbSet { get; set; }
public Repository(DbContext dbContext)
{
if (dbContext == null)
throw new ArgumentN
我正在尝试为数据访问层创建一个存储库& UnitOfWork。在我当前的实现中,每次创建新的存储库时,我都必须修改我的UnitOfWork。我希望避免这种情况,并保留扩展存储库抽象类的功能。
下面是我的通用存储库& UnitOfWork接口和类
public interface IRepositoryBase<T> where T : class
{
IList<T> FindAll();
T FindByCondition(Expression<Func<T, bool>> exp
我正在努力理解单一责任原则(SRP)。它说,一个班级应该只有一个责任和理由来改变。这是一个典型的仓库下面。这是否意味着,每个项目都应该是自己的类呢?目前,插入,删除,搜索,都在一个类别?如果是这样的话,为什么人们不把所有的项目分成多个类呢?
public class BaseRepository<TEntity> : IRepository<TEntity> where TEntity : class
{
private readonly DbContext _dbContext;
public BaseRepository(DbContext dbC
我想使用EF执行数据库查询。GetAvailableUsers方法在.Where(...)条件下调用另一个也访问DbContext的方法。当我这样做时,我会得到以下错误:
A second operation started on this context before a previous operation completed. This is usually caused by different threads using the same instance of DbContext, however instance members are not guaranteed to be
我需要你帮助实现我的业务层的UnitOfWork。希望将多个不同的业务服务调用包装到单个事务中。让我们假设我使用Entity Framework作为我的存储库层,并且我有一个额外的业务层用于验证和其他业务规则。在这个例子中,非常非常简单。
public class MyDbContext
{
public DbSet<User> Users;
public DbSet<Contract> Contracts;
}
public class UserService
{
public UserService(MyDbContext dbContex
我们在应用程序中有几个依赖于实体框架6的类。因此,我们将我们的DbContext注入到各个领域。但是,某些模块实现需要DbContext的多线程方法作为临时服务,以防止任何线程问题。其他模块可以通过简单地在任何子模块或接收相同共享DbContext的模块上调用DbContext来将它们串在一起并进行大规模保存。但是,这种方法要求将DbContext添加为一个作用域服务。
除了构建一些子类或接口(这只是从我的DbContext继承)之外,是否有任何方法动态地确定一个类是获得给定服务的作用域版本还是临时版本?
子类上下文的示例可能如下所示
public class TransientDbConte
我正在尝试实现一个在中描述的通用存储库
似乎泛型DbSet没有实现AsNoTracking( )方法,我是不是使用了正确的语法?如何解决此问题
public class BaseRepository<TEntity> : IGenericRepository<TEntity>
where TEntity : class
{
private readonly DbContext _dbContext;
public BaseRepository(DbContext dbContext)
{
_dbContext = dbCo
我想在我的ASP.NET MVC 5应用程序中添加两个DbContext,一个用于ASPIdentity,另一个用于应用DB。我正在使用存储库模式。的问题是,如何在BaseRepository中指定每个DbContext的实体?是我所做的。
1- DatabaseFactory & IDatabaseFactory
public class DatabaseFactory<T> where T : DbContext,new()
{
private T dbContext;
public T Init()
{
return dbCo
我正在尝试创建一个接受2种泛型类型的通用存储库。
public class EfRepository<T, TS> : IAsyncRepository<T,TS> where T : BaseEntity
where TS : DbContext
{
..........
}
在我的startup.cs中,我有一个通常的映射:
services.AddScoped<DbContext, ConfigDbContext>();
现在我
我有这些接口:
public interface IUnitOfWork
{
IPersonRepository People { get; }
IBookRepository Books { get; }
int Commit();
}
public interface IBookRepository
{
Book GetBookById(int id);
IQueryable<Book> GetAllBooks();
}
public interface IPersonRepository
{
Person GetPerson
有人能解释一下为什么不起作用吗。
我有两个数据库上下文。以及一种具有不同返回类型和不同查询的通用方法。
public interface IDataFetcher<T> where T : IMarker
{
public List<T> GetData();
}
public interface IFetchServiceOne<T> : IDataFetcher<T> where T : IMarker
{
//maybe some methods here
}
public interface IFetchServiceTwo<
我最近开始使用受启发的。所以我已经习惯了在我的回复中这样做:
public IEnumerable<POCO> GetById(int id)
{
using (var ctx = new DbContext())
{
var query = from ...;
return query.ToList();
}
}
现在我要这样做:
public IPageable<POCO> GetById(int id)
{
var ctx = new DbContext()
var query = from ...;
r
老方法 到目前为止,我创建了dbContext,如下所示,所以dbContext是短暂的,正如它应该存在的那样( dbContext只对特定的操作有效)。 using (var dbContext = new MainDbContext())
{ ... } 新方法 现在我尝试对dbContext使用DI。目前,我不想使用任何DI容器,只想使用纯DI。 public partial class MainWindowViewModel
{
IMainDbContext dbContext;
public MainWindowViewModel(IMainDbContext
public ActionResult Index()
{
IRepository<Group> groupRepo = new Repository<Group>();
var k = groupRepo.GetAll().ToList();
return View("Groups");
}
使用简单的GetAll(),我试图从表中获取所有数据
public class Repository<T> : IRepository<
我对此做了一些修改,删除了一个方法,从我找到这个例子的原始帖子中删除了一个方法。这是通用存储库。
/// <summary>
/// Repository base class used with DbContext Originally From http://dotnetspeak.com/index.php/2011/03/repository-pattern-with-entity-framework/
/// </summary>
/// <typeparam name="TContext">Type of DdContext th
在将DbContext传递给另一种方法时发出,例如:
public bool MarkCustomerForDelete(Customer customerObj)
{
using(var dbContext = new MyContext())
{
using(var dbTransaction = dbContext.Database.BeginTransaction())
{
//Clear all orders for the Given Customers
我正在做一个80%已经完成(一些特性需要实现)的大型项目,最近我们发现这个项目不允许并发请求(我指的是多个用户对同一个存储库的请求)。有时我们会得到空引用&有时“执行不能打开可用的连接,连接状态是关闭的”等等。我们的源代码在世界之外受到强烈的限制。这里有一些code.Let我知道是否存在任何架构问题,因为架构人员离开了公司。它使用的是ninject 3.0。我已经对所有管理人员的存储库使用了InRequestScope(),但没有任何进展。
更新:这里没有使用任何ORM,我试图通过类中的数据适配器连接SqlServer
public class DbContext
{
//exec
我有很多这样的方法:
public IEnumerable<Director> GetAllDirectors()
{
using (var dbContext = new BodModelContainer())
{
return dbContext.Members.OfType<Director>().ToList();
}
}
..or这个.。
public Member GetMemberById(int memberId)
{
usi
当使用DbContext框架时,我试图了解一个EF6类与多个类的性能影响。
例如,如果我们有一个简单的DbContext,如下所示:
public class MainDbContext : DbContext
{
public DbSet<Car> Cars { get; set; }
public void AddCar(Car car)
{
Cars.Add(car);
SaveChanges();
}
}
现在,让我们假设我有一个以以下方式使用上述DbContext的服务:
public class CarS
我编写抽象存储库
using System;
using System.Collections.Generic;
using System.Data;
using System.Data.Entity;
using System.Linq;
using System.Linq.Expressions;
namespace Framework.DataLayer
{
public class Context<T> : IContext<T> where T : class
{
private readonly DbContext _dbC