我正在使用DevExpress EntityInstantFeedbackSource
作爲數據源到XtraGrid
控件。但是,我沒有使用app.config
文件中的連接字符串;而是我在運行時設置實體框架的連接字符串。
的代碼如下:databind entityframework ObjectSet <T> to gridcontrol(c#)
void Form1_Load(object sender, EventArgs e)
{
entityInstantFeedbackSource1.KeyExpression = "Prodid";
entityInstantFeedbackSource1.GetQueryable += entityInstantFeedbackSource1_GetQueryable;
entityInstantFeedbackSource1.DismissQueryable += entityInstantFeedbackSource1_DismissQueryable;
gridControl1.DataSource = null;
gridControl1.DataSource = entityInstantFeedbackSource1;
}
void entityInstantFeedbackSource1_GetQueryable(object sender, GetQueryableEventArgs e)
{
EntityConnectionStringBuilder ecsb = new EntityConnectionStringBuilder();
ecsb.Metadata = @"res://*/Model2.csdl|res://*/Model2.ssdl|res://*/Model2.msl";
ecsb.Provider = @"System.Data.SqlClient";
ecsb.ProviderConnectionString = @"data source=.\sqlexpress;initial catalog=AdventureWorks; integrated security=True;MultipleActiveResultSets=True;App=EntityFramework";
using (var context = new ObjectContext(ecsb.ConnectionString))
{
context.DefaultContainerName = "AdventureWorksEntities";
ObjectSet<Person> query = context.CreateObjectSet<Person>();
var q = from s in query
select s;
e.QueryableSource = q;
e.Tag = context;
}
}
void entityInstantFeedbackSource1_DismissQueryable(object sender, GetQueryableEventArgs e)
{
((ObjectContext)e.Tag).Dispose();
}
該網格空白。但是,如果我圍繞'查詢'編寫foreach循環並查看Console.WriteLine
中的輸出,那麼我可以看到數據。
另外,如果我設置e.QueryableSource = q.ToArray().AsQueryable()
那麼我可以看到網格中的數據。但是這樣做會一次性加載所有數據,通過取消EntityInstantFeedbackSource
的好處。
爲什麼查詢中沒有數據?以及如何將ObjectSet數據綁定到一個gridcontrol?
然而如果設置了e.QueryableSource = q.ToArray()AsQueryable已(),然後我可以在網格中看到的數據。但是這樣做會一次加載所有數據,從而使entityinstantfeedbacksource的好處無效。 – user1746821 2013-03-06 10:03:18