gpt4 book ai didi

entity-framework - EF Code First 多个表到单个实体

转载 作者:行者123 更新时间:2023-12-04 05:47:14 27 4
gpt4 key购买 nike

我刚刚开始使用 Entity Framework ,我似乎误解了一些东西。基本上我已经建立了一个数据库。假设以下是我的表格。

**Employees**
EmployeeId
CubeId (FK to Cubes table)
NameId (FK to Name table)

**Cubes**
CubeId
CubeName

**Person**
NameId
FirstName
LastName

我希望能够写出这样的东西: SELECT EmployeeId, CubeId, CubeName, FirstName, LastName FROM Employees LEFT OUTER JOIN Cubes LEFT OUTER JOIN Person .所以它会返回所有的员工。基本上,在 EF Code First 中,您是否必须为每个表创建一个类?如果没有,你如何创建一个 LEFT OUTER Join 等价物?我发现的所有示例都使用导航属性从表到表(即类到类)。

最佳答案

楷模:

public class Employee 
{
[Key]
public int EmployeeId {get;set;}
public int CubeId {get;set;}
[ForeignKey("Cube")]
public int NameId {get;set;}
[ForeignKey("Name")]

public virtual Cube Cube {get;set;}
public virtual Name Name {get;set;}
}

public class Cube
{
[Key]
public int CubeId {get;set;}
public string CubeName {get;set;}
}

public class Name
{
[Key]
public int NameId {get;set}

public string FirstName {get;set;}
public string LastName {get;set;}
}

你的背景:
public class YourContext:DbContext
{
public DbSet<Name> Names {get;set;}
public DbSet<Cube> Cubes {get;set;}
public DbSet<Employee> Employees {get;set;}
}

您的查询:
YourContext db = new YourContext();
var query = db.Employees.Where(x => x.EmployeeId == id).Select(x => new
{
EmployeeId = x.EmployeeId,
CubeId = x.Cube.CubeId,
CubeName = x.Cube.CubeName,
FirstName = x.Name.FirstName,
LastName = x.Name.LastName
}).FirstOrDefault();

这将找到第一个具有某些 id 的员工(如果没有则返回 null),然后创建一个具有您提到的所有属性的类型。如果您需要姓氏,可以通过以下方式访问它:

字符串 lastName = query.LastName;

关于entity-framework - EF Code First 多个表到单个实体,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10520877/

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