我正在尝试使用EF Core访问无法修改的现有数据库。该数据库有两个用于记录的主表:log
和logentry
。
//Log
LogPK UserFK LogDescriptionFK LogTableFK PrimaryKey Stamp
//LogEntry
LogFK LogTableFK LogEventFK LogColumnFK PrimaryKey Parm1 Parm2
两个表均未定义实际的主键。
当用户更新系统(即人员)中的记录时,将创建一条日志记录,并为更改的每个字段创建一个日志条目(即,名字从“ Ted”更改为“ Tedd” ,姓氏从“哈里斯”更改为“哈里森”,等等。
所有LogEntry
记录都绑定到单个Log
记录。日志条目也由FK绑定到表名,事件类型和列名的列表。 (我认为可能是基于这些表中存在的表和列来限制要记录的更改)。
系统的原始创建者还使用这些表来登录登录到系统的用户。在这种情况下,他将创建具有单个日志条目的单个日志记录。但是,在这种情况下,没有更改“列”,因此LogColumnFK
为空。
最初,我已经像这样配置了DBContext:
builder.Entity<LogEntry>().ToTable("logentry")
.HasKey(l => new {l.LogFK, l.LogTableFK, l.LogEventFK, l.LogColumnFK });
这对于记录更改非常有用,但是当我尝试登录用户登录时,由于LogColumnFK
为空,所以会出现错误。从键定义中删除l.LogColumnFK
应该可以解决登录用户登录的问题,但是由于LogColumnFK
会使更改项保持唯一,因此在尝试记录更改时会产生错误。
有什么办法可以解决这个问题?