实体框架从数据库-计算属性从另一个表

本文关键字:属性 另一个 计算 框架 数据库 实体 | 更新日期: 2023-09-27 18:07:45

在我的数据库中,我有表PersonWork,它们与一个Person连接到许多具有外键PersonIdWork

这些是表格:

CREATE TABLE [dbo].[Work]
(
        [WorkId] [int] IDENTITY(1,1) NOT NULL,
        [PersonId] [int] NOT NULL,
        [KollelStatusId] [tinyint] NOT NULL,
        [Job] [nvarchar](50) NULL,
        [Mascoret] [int] NULL,
        CONSTRAINT [PK_Work] 
           PRIMARY KEY CLUSTERED ([WorkId] ASC)
                   WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, 
                         IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, 
                         ALLOW_PAGE_LOCKS  = ON) ON [PRIMARY]
) ON [PRIMARY]
ALTER TABLE [dbo].[Work] WITH CHECK 
   ADD CONSTRAINT [FK_Work_Person] 
   FOREIGN KEY([PersonId]) REFERENCES [dbo].[Person] ([PersonId])
CREATE TABLE [dbo].[Person]
(
        [PersonId] [int] IDENTITY(1,1) NOT NULL,
        [FamilyId] [int] NULL,
        [FirstName] [nvarchar](50) NOT NULL,
        [LastName] [nvarchar](50) NULL,
        [DateOfBirth] [smalldatetime] NOT NULL,
        [TeudatZehut] [varchar](9) NULL,
        [Phone] [varchar](15) NULL,
        [Email] [varchar](100) NULL,
        [Issue] [nvarchar](2000) NULL,
        CONSTRAINT [PK_KupaPerson] 
           PRIMARY KEY CLUSTERED ([PersonId] ASC)
                   WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, 
                         IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, 
                         ALLOW_PAGE_LOCKS  = ON) ON [PRIMARY]
) ON [PRIMARY]

我需要在ASP中显示人员。. NET MVC视图。但不是PersonId,我想显示Job字符串。

如何从数据库生成的实体框架?

谢谢?

实体框架从数据库-计算属性从另一个表

如果你在value _personId中获得了personId你可以这样做:

var listOfJobs = db.Work.Where(a=>a.PersonId == _personId).Select(a=>a.Job).ToList();

这将返回该人员链接到的工作列表。

如果你只从person模型中得到名字或任何其他值,你可以这样做:

var listOfJobs = db.Work.Where(a=>a.Person.LastName == _lastName).Select(a=>a.Job).ToList();

这将返回所有LastName等于_lastName值的人的工作列表。

如果你想从两个表中获取值,你可以JOIN两个实体:

var listOfObjects = from w in db.Work
join p in db.Person on p.PersonId equals w.PersonId
where w.PersonId == _personId
select w.Job, p.FirstName;

如果您想从数据库中获取所有person的工作,只需从上面删除where语句,如:

var listOfObjects = from w in db.Work
join p in db.Person on p.PersonId equals w.PersonId 
select w.Job, p.FirstName;

这将生成一个查询来获取所有人的作业。

如果您需要从模型中获得更多的值,只需扩展select语句,添加更多的值,如:

select w.Job, p.FirstName, p.LastName, w.WorkId, w.Mascoret