复合EF核心密钥中的Null值的解决方法

时间:2020-09-29 15:36:38

标签: c# entity-framework

我正在尝试使用EF Core访问无法修改的现有数据库。该数据库有两个用于记录的主表:loglogentry

//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会使更改项保持唯一,因此在尝试记录更改时会产生错误。

有什么办法可以解决这个问题?

0 个答案:

没有答案