我正在使用Visual Studio 2012 C Sharp(C#)和SQL Server Express。我正在尝试通过MSDN演练:在DataGrid控件中显示来自SQL Server数据库的数据。我添加了推荐的AdventureWorksLT2008示例数据库。以下是我遵循的说明:
AdventureWorksModel.edmx
,然后单击“添加”。 (出现实体数据模型向导。)App.Config
中的保存实体连接设置”复选框,然后单击“下一步”。检索并呈现数据:
MainWindow.xaml
文件。<Grid>
和</Grid>
标记之间添加以下DataGrid标记,以添加名为dataGrid1
的DataGrid。Window_Loaded
的窗口创建一个事件处理程序。MainWindow.xaml.vb
或MainWindow.xaml.cs
)。添加以下代码以仅从连接表中检索特定值,并将DataGrid的ItemsSource
属性设置为查询结果:
using System;
using System.Collections.Generic;
using System.Data.Objects;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;
namespace DataGridSQLExample
{
/// <summary>
/// Interaction logic for MainWindow.xaml
/// </summary>
public partial class MainWindow : Window
{
AdventureWorksLT2008Entities dataEntities = new AdventureWorksLT2008Entities();
public MainWindow()
{
InitializeComponent();
}
private void Window_Loaded(object sender, RoutedEventArgs e)
{
ObjectQuery<Product> products = dataEntities.Products;
var query =
from product in products
where product.Color == "Red"
orderby product.ListPrice
select new { product.Name, product.Color, CategoryName = product.ProductCategory.Name, product.ListPrice };
dataGrid1.ItemsSource = query.ToList();
}
}
}
当我跑步时,我收到此错误:
无法将类型'System.Data.Entity.DbSet'隐式转换为 'System.Data.Objects.ObjectQuery' on 这一行: ObjectQuery products = dataEntities.Products;
我没有尝试过任何建议 - 有什么建议吗?
答案 0 :(得分:7)
你可以直接使用,你不需要施放
var query =
from product in dataEntities.Products
where product.Color == "Red"
orderby product.ListPrice
select new { product.Name, product.Color, CategoryName = product.ProductCategory.Name, product.ListPrice };
Nota:
ObjectQuery表示在给定对象的上下文中对概念模型执行的典型查询。
dataEntities.Products表示数据集
答案 1 :(得分:1)
我意识到这确实很老,但是您也可以执行以下操作:
更改:
using System.Data.Objects;
收件人:
using System.Data.Entity;
并更改:
ObjectQuery<Product> products = dataEntities.Products;
收件人:
DbSet<Product> products = dataEntities.Products;