gpt4 book ai didi

entity-framework - 使用 Entity Framework 模拟存储库

转载 作者:行者123 更新时间:2023-12-03 07:33:24 24 4
gpt4 key购买 nike

我使用 mog 通过 LINQ to SQL 模拟存储库,如下所示:

public static IProductsRepository MockProductsRepository(params Product[] prods){
// Generate an implementer of IProductsRepository at runtime using Moq
var mockProductsRepos = new Mock<IProductsRepository>();
mockProductsRepos.Setup(x => x.Products).Returns(prods.AsQueryable());
return mockProductsRepos.Object;
}

public interface IProductsRepository{
IQueryable<Product> Products { get; }
void SaveProduct(Product product);
void DeleteProduct(Product product);
}

如果我像这样使用它,如何更改 Entity Framework 的此功能:

public interface IProductsRepository : IEntities{
EntityState GetEntryState(object entry);
void SetEntryState(object entry, EntityState state);
void Commit();
}

public interface IEntities{
DbSet<Product> Products { get; set; }
}

现在我正在使用DbSet

最佳答案

好吧,由于 IProductsRepository 实现了 IEntities 你应该有一个

public DbSet<Product> Products { get; set; }

属性在那里,但我要做的就是向 IProductRepository 添加一个 Fetch 方法,例如

public interface IProductsRepository : IEntities
{
EntityState GetEntryState(object entry);
void SetEntryState(object entry, EntityState state);
void Commit();

// New method
IQueryable<Product> FetchAll();
}

然后,在您的 MockProductsRepository 中更改设置行,如下所示:

mockProductsRepos.Setup(x => x.FetchAll()).Returns(prods.AsQueryable());

关于entity-framework - 使用 Entity Framework 模拟存储库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5194857/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com