1

我正在使用 Z.EntityFramework.Plus 包在我的项目中实现审计功能;我遵循 DB first 方法,我运行创建两个审计表的查询,如下所述通过更新 .edmx 文件,我得到了那些新的 DBset

public virtual DbSet<AuditEntries> AuditEntries { get; set; }
public virtual DbSet<AuditEntryProperties> AuditEntryProperties { get; set; }

现在我想检索审计历史,我Where在 Z.EntityFramework.Plus 命名空间中使用扩展方法:

var auditlog = AuditExtensions.Where<TbAdditions>(oContext.AuditEntries, id).ToList();

但是编译器对我大喊大叫,他不能按照它DBset<AuditEntry>需要DBSet<AuditEntries>Where定义强制转换DbSet<AuditEntry>,不DbSet<AuditEntries>,我应该更改表的名称吗?

4

1 回答 1

1

免责声明:我是Entity Framework Plus项目的所有者

您目前正在使用带有自定义类AuditEntriesAuditEntryProperties. 因此,您没有将 Code First 与类一起使用AuditEntry并由AuditEntryPropertyZ.EntityFramework.Plus 库提供。

扩展方法是为库提供的类制作的,所以这就是它与您的类不兼容的原因。

您将不得不在您身边实现与此来源相同的扩展方法:DbSet`AuditEntry.cs

可能需要更多的扩展方法。

审计功能应该在夏季完全重新编码,以允许像此功能这样的更多可扩展性。

编辑:回答子问题

如何实施?

这是一个如何实现它的示例:https ://gist.github.com/mshwf/af017b50ceb2994d953762ef2b20386d

于 2017-07-10T01:38:23.500 回答