我使用以下命令创建了模型类和数据库上下文:
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/