I have tables Table1, Table2, Table3 and so on. To handle auditing, I use Audit table with the following fields Id, Username, ChangeTime, ChangeType, TableName and TableRecordId.
To obtain all records in Table1 joined with Audit on Table1.Id = Audit.TableRecordId where Username is "jdoe" for example, I have the following:
var results = db.Table1s
.Join(db.Audits.Where(a => a.Username == "jdoe"),
t => t.Id,
a => a.RecordId,
(t, a) => new { Table1 = t, Audit = a });
But when I run it I get the following error:
The model item passed into the dictionary is of type 'System.Collections.Generic.List`1[<>f__AnonymousType1`2[SampleApp.Models.Table1,AuditLibraryContext.Models.Audit]]', but this dictionary requires a model item of type 'System.Collections.Generic.IEnumerable`1[AuditTrackerSample.Models.Table1]'.
Got it working I ended up with the following code:
var results = db.Table1s
.Join(db.Audits.Where(a => a.Username == "jdoe"),
t => t.Id,
a => a.RecordId,
(t, a) => t);