Сопоставление нескольких таблиц с одним классом сущности в структуре сущности
прежде чем это будет помечено как дубликат, я проверил другие связанные сообщения, и они не отвечают на мой вопрос
Я работаю над устаревшей базой данных, которая имеет 2 таблицы, которые имеют отношения 1:1
в настоящее время у меня есть один тип (1Test: 1Result) для каждой из указанных таблиц
я хотел бы объединить эти конкретные таблицы в один класс
текущие типы выглядят следующим образом
public class Result
{
public string Id { get; set; }
public string Name { get; set; }
public string Text { get; set; }
public string Units { get; set; }
public bool OutOfRange { get; set; }
public string Status { get; set; }
public string Minimum { get; set; }
public string Maximum { get; set; }
public virtual Instrument InstrumentUsed { get; set; }
public virtual Test ForTest { get; set; }
}
public class Test
{
public int Id { get; set; }
public string Status { get; set; }
public string Analysis { get; set; }
public string ComponentList { get; set; }
public virtual Sample ForSample { get; set; }
public virtual Result TestResult { get; set; }
}
Я бы предпочел, чтобы они выглядели следующим образом
public class TestResult
{
public int Id { get; set; }
public string Status { get; set; }
public string Analysis { get; set; }
public string ComponentList { get; set; }
public string TestName { get; set; }
public string Text { get; set; }
public string Units { get; set; }
public bool OutOfRange { get; set; }
public string Status { get; set; }
public string Minimum { get; set; }
public string Maximum { get; set; }
public virtual Instrument InstrumentUsed { get; set; }
}
В настоящее время я использую свободный API для сопоставления их с нашей старой базой данных оракула
что было бы лучшим методом объединения их в один класс
обратите внимание, что это устаревшая база данных, изменяющая таблицы, не является вариантом, и создание представлений не является жизнеспособным решением на данном этапе проекта.
Ответы
Ответ 1
Вы можете использовать Entity Splitting для достижения этого, если у вас есть тот же первичный ключ в обеих таблицах.
modelBuilder.Entity<TestResult>()
.Map(m =>
{
m.Properties(t => new { t.Name, t.Text, t.Units /*other props*/ });
m.ToTable("Result");
})
.Map(m =>
{
m.Properties(t => new { t.Status, t.Analysis /*other props*/});
m.ToTable("Test");
});
Здесь полезная статья