Enity Framework db.Products.SqlQuery(“”)返回null

时间:2018-08-03 20:15:27

标签: c# sql-server entity-framework

<?xml version="1.0" encoding="utf-8"?>
<TextView
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@android:id/text1"
    style="?android:attr/spinnerItemStyle"
    android:singleLine="true"
    android:textSize="20sp"
    android:padding="10dp"
    android:gravity="center_vertical"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:ellipsize="marquee"
    android:background="@drawable/back"
    android:textAlignment="inherit"/>

在SQL Server上,此查询返回结果,但未使用Entity Framework

1 个答案:

答案 0 :(得分:1)

这应该有效。请注意,第一个参数是一个字符串参数值,其中该值由通配符%包围,并且在查询本身中没有用引号引起来,因为它将被适当的参数替换。无法设置下一个10个偏移量,但是可以使用.Skip.Take扩展名来代替返回的结果集。在下面的查询中,我手动编码了该值。我还删除了多余的AND

db.Products.SqlQuery("SELECT * FROM Products WHERE Name LIKE {0} ORDER BY Name OFFSET 0 ROWS FETCH NEXT 10 ROWS ONLY", "%" + str + "%").ToList();

使用跳过/获取

var top10 = db.Products.SqlQuery("SELECT * FROM Products WHERE Name LIKE {0} ORDER BY Name", "%" + str + "%").Skip(0).Take(10).ToList();

这是与使用SqlQuery

相同的功能查询
var top10 = db.Products.Where(prod => prod.Name.Contains(str))
    .OrderBy(x => x.Name)
    .Skip(0) // not necessary because of value 0 but illustrates how to skip records
    .Take(10)
    .ToList();