gpt4 book ai didi

c# - 你如何模拟 - _context.Entry(myEntity).Property(e => e.myProperty).IsModified

转载 作者:行者123 更新时间:2023-11-30 18:26:42 32 4
gpt4 key购买 nike

我已经开始使用 Moq,到目前为止,我想我已经弄明白了如何将我的接口(interface)抽象到另一层以支持模拟 DbContext。

现在我的代码正在运行,我点击了这一行

_context.Entry(updated).Property(e => e.Position).IsModified = false;

现在条目为空,所以我得到一个错误。我怎样才能让最小起订量满意?

这是我的大部分 IDataContext

public interface IDataContext
{
IDbSet<Content> Contents { get; set; }
IDbSet<FieldGroup> FieldGroups { get; set; }

#region DbContext public properties

DbChangeTracker ChangeTracker { get; }
DbContextConfiguration Configuration { get; }
Database Database { get; }

#endregion

#region DbContext public methods

IEnumerable<DbEntityValidationResult> GetValidationErrors();
DbEntityEntry Entry(object entity);
DbEntityEntry<TEntity> Entry<TEntity>(TEntity entity) where TEntity : class;
DbSet<TEntity> Set<TEntity>() where TEntity : class;
DbSet Set(Type entityType);
int SaveChanges();
Task<int> SaveChangesAsync();

#endregion

#region State

bool IsState(object entity, EntityState state);
void SetState(object entity, EntityState state);

#endregion
}

为了处理对象上的设置状态,然后我将以下方法抽象到我的 DataContext 中

public bool IsState(object entity, EntityState state)
{
return this.Entry(entity).State == state;
}


public void SetState(object entity, EntityState state)
{
this.Entry(entity).State = state;
}

但我不确定如何处理属性问题。

非常感谢任何帮助

最佳答案

一旦您开始需要测试 Entity Framework 内部的“细节”,如 ChangeTracker 和条目状态,您最好的选择是使用 DbContext 的内存中表示进行测试,例如 Effort .

关于c# - 你如何模拟 - _context.Entry(myEntity).Property(e => e.myProperty).IsModified,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28151219/

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