gpt4 book ai didi

entity-framework - 为什么 DbContext 没有实现 IDbContext 接口(interface)?

转载 作者:行者123 更新时间:2023-11-28 19:38:20 27 4
gpt4 key购买 nike

为什么Entity Framework中没有IDbContext接口(interface)?如果存在一个带有 SaveChanges() 等方法的现有接口(interface),您可以从中派生自定义数据库上下文接口(interface),那么测试事情不是更容易吗?

public interface ICustomDbContext : IDbContext
{
// add entity set properties to existing set of methods in IDbContext
IDbSet<SomeEntity> SomeEntities { get; }
}

最佳答案

我看到这个 IDbContext:

See this link然后您使用该接口(interface)为您的 Entities Context 创建一个新的部分类。

public partial class YourModelEntities : DbContext, IDbContext 

编辑:我编辑了这篇文章,这对我有用。我的背景

namespace dao
{
public interface ContextI : IDisposable
{
DbSet<TEntity> Set<TEntity>() where TEntity : class;
DbSet Set(Type entityType);
int SaveChanges();
IEnumerable<DbEntityValidationResult> GetValidationErrors();
DbEntityEntry<TEntity> Entry<TEntity>(TEntity entity) where TEntity:class;
DbEntityEntry Entry(object entity);
string ConnectionString { get; set; }
bool AutoDetectChangedEnabled { get; set; }
void ExecuteSqlCommand(string p, params object[] o);
void ExecuteSqlCommand(string p);
}
}

YourModelEntities 是您自动生成的分部类,您需要创建一个新的同名分部类,然后添加新的上下文接口(interface),本例为 ContextI

注意:该接口(interface)没有实现所有方法,因为这些方法是在您的自动生成代码中实现的。

namespace dao
{
public partial class YourModelEntities :DbContext, ContextI
{
public string ConnectionString
{
get
{
return this.Database.Connection.ConnectionString;
}
set
{
this.Database.Connection.ConnectionString = value;
}
}

bool AutoDetectChangedEnabled
{
get
{
return true;
}
set
{
throw new NotImplementedException();
}
}

public void ExecuteSqlCommand(string p,params object[] os)
{
this.Database.ExecuteSqlCommand(p, os);
}

public void ExecuteSqlCommand(string p)
{
this.Database.ExecuteSqlCommand(p);
}

bool ContextI.AutoDetectChangedEnabled
{
get
{
return this.Configuration.AutoDetectChangesEnabled;
}
set
{
this.Configuration.AutoDetectChangesEnabled = value;
}
}

}
}

关于entity-framework - 为什么 DbContext 没有实现 IDbContext 接口(interface)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12263514/

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