- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我有一个运行良好的实体,但我需要添加来自另一个表的附加属性。我没有创建 View 的能力,所以我只想添加一个 [NotMapped] 字段,然后使用 Context.Database.SqlQuery 执行我的自定义语句并返回所有普通字段和这个新字段。
换句话说是这样的:
public class Employee
{
public int EmployeeId { get; set; }
public string EmployeeName { get; set; }
[NotMapped]
public string CustomerName { get; set; }
}
public List<Employee> GetEmployees()
{
using (MyContext context = new MyContext())
{
return context.Database.SqlQuery<Employee>("select E.EmployeeId, E.EmployeeName, C.CustomerName from Employee E left join Customer C on E.CustomerId = C.CustomerId").ToList();
}
}
是的是的,这不是最好的例子,但却是表达观点的最简单方法。从我一直在阅读的所有内容来看,SqlQuery 应该忽略属性,所以这应该有效,但我的 CustomerName 总是返回 null(我在 Management Studio 中运行 SQL,它在那里有一个值,只是在 EF 反序列化之后进入我的对象)。
我需要做什么才能让它发挥作用?或者我可以吗? EF 是否更改为不允许这样做?
-shnar
最佳答案
我在使用存储过程对计算字段进行选择时遇到了同样的麻烦。我创建了一个 View 模型,它看起来与我的实体完全一样,没有数据库注释。然后在我使用 View 模型调用我的存储过程后,我选择进入我的实体。因此,使用上面的示例:
public class EmployeeVM
{
public int EmployeeId { get; set; }
public string EmployeeName { get; set; }
public string CustomerName { get; set; }
}
然后你可以调用:
public List<Employee> GetEmployees()
{
using (MyContext context = new MyContext())
{
return context.Database.SqlQuery<EmployeeVM>("select E.EmployeeId, E.EmployeeName,
C.CustomerName from Employee E left join Customer C on E.CustomerId = C.CustomerId")
.Select(x=> new Employee(){
EmployeeId = x.EmployeeId,
EmployeeName = x.EmployeeName,
CustomerName = x.CustomerName
}).ToList();
}
}
希望这对您有所帮助。
关于c# - SqlQuery 到 [NotMapped] 字段?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25391619/
带有 Cosmos DB + Nodejs 的 Azure Function App 无法使用 SQLQuery(输入)。没有返回任何文件。 我已成功获取 Id/PartionKey 组合来返回文档。
我在插入数据库时遇到问题,我创建了一个函数将数据插入表中,但它仅影响第一行。 这是我的功能: add 第 18 页 http://cran.r-project.org/web/packages/R
我要为图书数据库编写一个查询。问题是按降序列出每个作者在 1995-2000 年的总收入。 SELECT DISTINCT b.author,b.earnings as TOTAL_EARNING F
我试过了 QSqlQuery query; query.prepare("DELETE FROM names WHERE id_col = :ID OR id_parent = :ID");
如何从 hibernate SQL 查询中提取变量 total、min、max 并将它们分配给 java 变量? (select count(*) as total, min(price) as mi
我正在 R 中执行以下命令: dbhandle <- odbcDriverConnect('driver={SQL Server};server=serveripaddress;database=DB
我一直在执行以下操作以使用我的 sql 查询传递参数: var retval = context.MyObject.SqlQuery(sql.ToString(),
有谁知道Database.SqlQuery在幕后做了一些会使其线程不安全的事情(比如创建或登记事务等)? 这是我必须从多个线程调用的一段代码 - 查询非常简单,硬编码(无法访问共享的用户代码数据):
我对 Hibernate SQLQuery.list() 方法有这种奇怪的行为。 问题描述如下: 我有一个 sql 选择查询,它只从数据库中检索单个列(组)(即,select group from p
使用 querydsl-sql 创建 SQLQuery 的方法: protected final T select(RelationalPathBase path, Function code)
如何使用 SQLQuery 显示查询的完整字符串。我尝试使用 getQueryString()但它不显示返回字符串中的参数值。 知道如何显示将在 MySQL 数据库服务器上执行的完整查询吗? Quer
我有一个名为 scholars_ 表,其中一列的名称为 validity,其中包含如下数据: 2016-2019 2016-2020 2016-2017 2018-2019 我想要实现的是获取学者的s
我有一个查询使用命名参数调用 postgres 存储过程。该过程可以采用许多参数,其中大部分都有默认值,我只想使用几个。 SQL 看起来像这样: SELECT {(mytable).*} FROM m
在我的 java 代码中,我是这样写的。此查询一次又一次地返回相同的记录。但是在数据库中我只有一条记录。 String queryString = "select e.business_event_i
hibernate 3.6 和 postgresql 9.1。使用 SQLQuery 如何获取结果数组数据(长数组 - 助手,“文本,长,时间戳”行数组 - 帐户)? limit = 1000
这是关于Java和MySQL的问题。我有这样的摘录: String selectString = "select"; int selectIndex = config.getMappingSql().
我正在使用 Entity Framework ,并且我有这个类 public partial class TipoRequisicaoSubCategoria { public
我应该如何构建 mysql 参数? 这是我做的方法,但仍然没有从中获得输出: var cities = ce.city.SqlQuery("Select * from world.city where
这个问题在这里已经有了答案: Hibernate createNativeQuery using IN clause (2 个答案) 关闭 8 年前。 我正在尝试将整数列表传递给 SQLQuery。
我使用这个查询 SELECT id_mov, movimientos.id_expte, expte.id_expte, id_dr, detalle, fecha, plazo, expte 来自运
我是一名优秀的程序员,十分优秀!