gpt4 book ai didi

c# - 在 Entity Framework 5 中创建模拟上下文时遇到问题

转载 作者:太空宇宙 更新时间:2023-11-03 11:04:33 25 4
gpt4 key购买 nike

我有我的上下文,其中包含以下内容:

public partial class MyEntities : DbContext
{
...
public DbSet<Cat> Cats { get; set; }
}

我想 mock 它。

我创建了另一个部分类,它实现了一个名为 IContext 的接口(interface).

我要放到这个界面

public interface IContext
{
DbSet<Cat> Cats { get; set; }
}

然后我可以创建一个模拟,每个人都很高兴。

除非我不想使用 DbSet<Cat>在我的界面中。这似乎是错误的,因为我不会使用数据库。有什么方法可以改变它,或者更好的解决方案吗?显然,上下文是从模板自动生成的,因此我无法对其进行编辑,除非它在重新生成时丢失。

我不太确定如何继续创建模拟上下文。有什么想法吗?

最佳答案

有办法。

您可以返回IDbSet而不是 DbSet,然后在模拟设置中,您可以提供模拟 IDbSet 作为模拟 IContext 中 Cats 属性的返回值。

public interface IContext
{
IDbSet<Cat> Cats{get;set;}
}
public partial class MyEntities : DbContext , IContext
{
public IDbSet<Cat> Cats { get; set; }
}

但也许更好的是,在您的界面中不要为每个实体类引入属性。 Insted 你的 IDbContext 只能是:

public interface IContext
{
IDbSet<T> Set<T>();
}

你可以查询

var query = dbContext.Set<Cat>().Where(....)

这样你就可以毫无问题地“模拟”它。

关于c# - 在 Entity Framework 5 中创建模拟上下文时遇到问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16398656/

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