3

「ノースウィンド」データベースでコードのこの部分を試していますが、DataBindエラーが発生しています

    protected void Page_Load(object sender, EventArgs e)
    {

        if (!Page.IsPostBack)
        {
            GetSpecificCustomer();
        }
    }

    private void GetSpecificCustomer()
    {
        using (var ctx = new northwindContext())
        {
            var query = ctx.Customers.Include("CustomerID").Take(3);

            grdEmployees.DataSource = query;
            grdEmployees.DataBind(); =>NotSupportedException was unhandled by user code(Data binding directly to a store query (DbSet, DbQuery, DbSqlQuery) is not supported. Instead populate a DbSet with data, for example by calling Load on the DbSet, and then bind to local data. For WPF bind to DbSet.Local. For WinForms bind to DbSet.Local.ToBindingList().)

        }
    }
4

2 に答える 2

6

例外には、あなたがする必要があるものが含まれています:

...代わりに、DbSet にデータを入力します ...

したがって、クエリを評価する必要があります。例外はLoadメソッドに言及していますが、とにかく結果をローカルに保存する必要があるため、最も簡単な解決策はToArray()、クエリを に割り当てるときにクエリを呼び出すことgrdEmployees.DataSourceです。

var query = ctx.Customers.Include("CustomerID").Take(3);
grdEmployees.DataSource = query.ToArray();
grdEmployees.DataBind();

このToArrayメソッドは、結果セットを配列で返すクエリを実行します。

于 2013-02-23T13:03:14.777 に答える
0

レコードのグループが必要な場合。

あなたが使用する必要があります.Tolist();

そのような :

var states = (from s in yourentity.nameTbl
              select s).ToList();

get one レコードでより良い結果を得るには、パフォーマンスが向上するため、この例を使用することをお勧めします。そのような :

var users = (from s in yourentity.UserTbls
             where s.User == Page.User.Identity.Name
             select s
            ).FirstOrDefault();

ページングのあるレコードのリストの場合:

int page = 1; // set your page number here
var rooms = (from s in yourentity.yourtable
             where s.User == Page.User.Identity.Name
             orderby s.Id descending
             select new {s.Id,s.Name,s.User}
            ).Skip((page-1)*SetPageSize).Take(SetPageSize).ToList();
于 2013-07-22T22:19:20.467 に答える