Linq -根据id从数据库中选择记录

本文关键字:选择 记录 数据库 -根 id Linq | 更新日期: 2023-09-27 18:11:21

我试图从数据库中获得我指定的id的记录。然而,我有困难创建正确的Linq查询。
首先,这是我尝试过的两件事,但似乎都不起作用。

var query_result = from d in db.Departments
                   where d.id == id
                   select d;

这里我尝试选择我给定id后面的部门。然而,在我的Departmentid属性是私有的。我希望保持这种方式,符合常规的面向对象编程。

在那之前我试过这样做:

var query_result = from d in db.Departments
                   where d.getId() == id
                   select d;

在本例中,我使用了id的getter,但这会给我以下错误:

方法'Int32 getId()'不支持转换为SQL。

我试着四处寻找,但我似乎找不到一个结论性的答案,在我看来,这应该是非常简单的。我确实看到了很多直接访问类属性的例子,但这意味着将它们设为公共。除非我错过了什么,否则我真的不想那样做。

我对Linq(或者c#)不是很有经验。

Linq -根据id从数据库中选择记录

如果你正在使用实体框架,那么你不能声明getset作为private,否则实体框架将无法访问它。

这是你要寻找的,以确保外部代码无法设置id:

public int Id { get; protected internal set; }

当前查询返回的是一个列表。听起来你需要一张唱片?为此,使用如下命令:

var recordDesired = db.Departments.FirstOrDefault(d => d.id == id);

假设'id'是某个地方定义的整型,并且'id'属性也是整型。你是否有机会使用实体框架?如果是这样,我认为'id'属性需要有一个公共getter和一个公共setter。我听说您不向终端客户端应用程序公开ID。一种选择是使用DTO(数据传输对象)转换数据库输出的所有优点,并将其包装在一个简单的类中,该类只公开最终应用程序关心的属性。