将多个表映射到实体框架中的单个实体类
本文关键字:实体 框架 单个 映射 | 更新日期: 2023-09-27 18:01:58
我正在处理一个遗留数据库,该数据库有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; }
}
我目前正在使用fluent API将这些映射到我们的遗留Oracle数据库。
将这些组合成一个类的最佳方法是什么?请注意,这是一个遗留数据库。在这个项目中,更改表不是一个选项,创建视图也不是一个可行的解决方案。
如果在两个表中使用相同的主键,则可以使用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");
});
这是一篇有用的文章