使用Entity Framework Core删除dbData.Database.SqlQuery<SomeModel>我无法找到为我的全文搜索查询构建原始SQL查询的解决方案,该查询将返回表数据以及排名.
我见过在Entity Framework Core中构建原始SQL查询的唯一方法是通过dbData.Product.FromSql("SQL SCRIPT");它没有用,因为我没有DbSet来映射我在查询中返回的排名.
有任何想法吗???
我有一个运作良好的实体,但是接下来我需要附加来自另一个表的其他属性。我没有制作视图的能力,所以我只想添加一个[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();
}
}
Run Code Online (Sandbox Code Playgroud)
是的,不是最好的例子,而是最简单的方法。从我一直在阅读的所有内容来看,SqlQuery应该忽略属性,因此应该可以正常工作,但是我的CustomerName总是返回null(我在Management Studio中运行了SQL,它在那里有一个值,只是在EF反序列化之后没有)进入我的对象)。
我需要做什么才能使它正常工作?可以吗 EF是否已更改为不允许这样做?
-shnar