sql - 如何使用 Microsoft.EntityFrameworkCore 连接多个表?

标签 sql .net asp.net-web-api .net-core

我使用以下命令创建了模型类和数据库上下文:

dotnet ef dbcontext scaffold "Server=localhost;Port=3306;Database=test;Uid=test;Pwd=1234;" MySql.Data.EntityFrameworkCore --output-dir src/Models 

我的 MariaDB(版本 10.1.8)数据库如下所示:

CREATE TABLE Lens(
    LensID INT AUTO_INCREMENT,    
    LensManufacturer TEXT,
    LensName TEXT,
    LensIsSingleFocalLength BOOLEAN,
    LensFocalLengthMin INT,
    LensFocalLengthMax INT,
    LensApertureMin TEXT,
    LensApertureMax TEXT,
    PRIMARY KEY (LensID)
);

CREATE TABLE Camera(
    CameraID INT AUTO_INCREMENT,
    CameraManufacturer TEXT,
    CameraModel TEXT,
    PRIMARY KEY(CameraID)
);

CREATE TABLE Author(
    AuthorID INT AUTO_INCREMENT,
    AuthorAlias TEXT,
    AuthorFirstName TEXT,
    AuthorLastName TEXT, 
    PRIMARY KEY (AuthorID)   
);

CREATE TABLE Image(
    ImageID INT AUTO_INCREMENT,
    LensID INT,
    CameraID INT,
    AuthorID INT,
    ImagePath VARCHAR(255),
    ImageTitle TEXT,
    ImageDescription TEXT,
    ImageTakenOn DATE,
    ImageShutterSpeed TEXT,
    ImageAperture DECIMAL(5,1),
    ImageISO INT,
    PRIMARY KEY (ImageID),
    FOREIGN KEY (LensID) REFERENCES Lens(LensID),
    FOREIGN KEY (CameraID) REFERENCES Camera(CameraID),
    FOREIGN KEY (AuthorID) REFERENCES Author(AuthorID)
);

当我使用数据库上下文获取图像时,我只获取图像表内的数据,而代表镜头、相机和作者的对象为空。

如何使用 Microsoft.EntityFrameworkCore 连接表?

或者我应该使用一个为我连接表格的 View ?

最佳答案

您可以使用 LINQ 查询来连接 Entity Framework 中的多个表。像下面这样

var Reg = (from app in db.Images
                       join Aut in db.Authors on app.AuthorID equals Aut.AuthorID
                       join Cam in db.Cameras on app.CameraID equals Cam.CameraID
                       join L in db.Lens on app.LensID equals L.LensID
                       select new ImageVM
                       {
                           ImageTitle = app.ImageTitle,
                           AuthorFirstName = Aut.AuthorFirstName,
                           CameraManufacturer = Cam.CameraManufacturer,
                           LensName = L.LensName

                       }).ToList();

关于sql - 如何使用 Microsoft.EntityFrameworkCore 连接多个表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55745590/

相关文章:

mysql - SQL 查询 min(y) max(y) 和 X 组

c# - LINQ 查询很慢

asp.net - 如何使用 JWT 对来自 Angular SPA 的 Web Api 2 进行用户身份验证?

c# - 正确使用迭代 block

c# - 使用存储库模式实现依赖注入(inject)的困惑 - c# EF Core

c# - 无法从 apicontroller 中的 OwinContext 获取 UserManager

sql - 从 SSMS 中的查询结果使用 SQL 创建表

mysql - SQL - 选择其中具有特定值和其他随机值的列

sql server if block errors when running a stored proc inside - 给出语法错误

c# - 如何将西里尔文字音译为拉丁文字