gpt4 book ai didi

c# - 将多个表映射到 Entity Framework 中的单个实体类

转载 作者:IT王子 更新时间:2023-10-29 04:14:39 25 4
gpt4 key购买 nike

我正在处理一个遗留数据库,该数据库有 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 将这些映射到我们的旧 Oracle 数据库。

将这些组合成一个类的最佳方法是什么?请注意,这是一个遗留数据库。在项目的这个阶段,更改表不是一个选项,创建 View 也不是一个可行的解决方案。

最佳答案

如果两个表中的主键相同,则可以使用实体拆分来实现这一点。

  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");
});

这是一个有用的 article

关于c# - 将多个表映射到 Entity Framework 中的单个实体类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6670580/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com