К сожалению, это невозможно с помощью картографирования. Ваше CurrentTagEntry
отражает отношение один-к-одному между Tag
и TagEntry
, но в то же время у вас есть отношение один-ко-многим между Tag
и TagEntry
. Сопоставление один-к-одному требует, чтобы оба объекта совместно использовали первичный ключ =>, чтобы иметь возможность отображать отношения один-к-одному. PK TagEntry должен быть от FK до Tag
. Это, очевидно, нарушит отношение один ко многим.
Вы должны сделать это как вспомогательную функцию вместо отображения.
Например, это можно использовать как вспомогательный запрос linq:
var lastLog = (from te in context.TagEntries
where te.TagId == id
orderby te.LogTime descending
select te).FirstOrDefault();
Или это как вспомогательная загрузка:
var entry = context.Entry<Tag>(tag);
if (!entry.Collection(t => t.TagEntries).IsLoaded)
{
// Selective eager loading
entry.Collection(t => t.TagEntries)
.Query()
.OrderByDescending(te => te.LogTime)
.Take(1)
.Load();
}
var tag = tag.TagEntries.FirstOrDefault();