EntityFramework.Extended ライブラリを使用して、システムに監査ログを実装しています。ただし、Person オブジェクトの外部キー 'TitleId' を更新すると、外部キーとして登録されず、Id が選択した表示フィールドに置き換えられません。
監査ログ構成: (これは Global.asax スタートアップ ファイルで呼び出されます)
public static class AuditLogConfiguration
{
public static void Register()
{
var auditConfiguration = AuditConfiguration.Default;
auditConfiguration.IncludeRelationships = true;
auditConfiguration.LoadRelationships = true;
auditConfiguration.DefaultAuditable = true;
// Use abbreviation value in audit log whenever Title is used as foreign key
auditConfiguration.IsAuditable<Title>()
.DisplayMember(x => x.Abbreviation);
}
}
個人エンティティ:
public class Person
{
[Key]
public int Id { get; set; }
[ForeignKey("Title")]
public int TitleId { get; set; }
public string Forename { get; set; }
public string Surname { get; set; }
public virtual Title Title { get; set; }
}
タイトル エンティティ:
public class Title
{
public int Id { get; set; }
public string Abbreviation { get; set; }
public string Description { get; set; }
}
更新ロジック:
var audit = BeginAudit();
person.TitleId = model.TitleId;
SaveChanges();
var log = audit.LastLog;
でプロパティの変更を確認するaudit.LastLog
と、TitleId の変更が関係として認識されず、構成で指定された表示変換が適用されません。