我正在使用"EntityFramework.Core": "7.0.0-rc1-final"由SQL Server 2012 Express DB支持的Entity-Framework Core(版本)的ASP.NET MVC 6项目.
我需要模拟Person实体和Address实体之间的多对多关系.根据本指南,我使用PersonAddress连接表实体对其进行建模,因为这样我可以存储一些额外的信息.
我的目标是以这种方式设置我的系统:
Person删除PersonAddress实例,则必须删除所有相关实例.Address它们引用的所有实例也必须删除,只要它们与其他PersonAddress实例无关.PersonAddress删除Address实例,则只有与其他PersonAddress实例无关时,才必须删除与其关联的实例.所有Person实例都必须存在.Address删除PersonAddress实例,则必须删除所有相关实例.所有Person实例都必须存在.我认为大多数工作必须在Person和之间的多对多关系中完成Address,但我希望也写一些逻辑.我将把这一部分从这个问题中解脱出来.我感兴趣的是如何配置我的多对多关系.
这是目前的情况.
这是Person实体.请注意,此实体与其他辅助实体之间存在一对多关系.
public class Person
{
public int Id {get; set; } //PK
public virtual ICollection<Telephone> Telephones { get; set; } //navigation property …Run Code Online (Sandbox Code Playgroud) c# entity-framework code-first ef-code-first entity-framework-core
我正在开发 ASP.NET Core 3.1 Web 应用程序。我想在数据库上保存数据时添加审计跟踪/日志。
我从这个 SO answer 中获得灵感,开始在测试项目中使用 Audit.NET。
这是我的目标(类似于相关的 SO 线程):
AppAuditDbContext;AppAuditDbContext;AppAuditDbContextDataAnnotations此时,我可以 CRUD 一个独立的审计实体,并在审计数据库上检索正确的审计。
但是,尽管我可以成功删除父实体及其子实体并获取父实体和子实体的审计数据,但我无法弄清楚如何从数据库中获取分组审计数据以用于此类场景。
我尝试使用 Audit.NET EntityFramework 的EntityFrameworkEvent.TransactionId和EntityFrameworkEvent.AmbientTransactionId,但它们都null在数据库上。
这是我的 POCO
public interface IAuditableEntity
{
[NotMapped]
string AuditAction { get; set; }
[NotMapped]
string AuditTransactionId { get; set; }
[NotMapped]
string AuditAmbientTransactionId { get; set; }
}
public class Scope : IAuditableEntity …Run Code Online (Sandbox Code Playgroud)