Sql server 如何针对SQL Azure上的系统视图使用Entity Framework 4?

Sql server 如何针对SQL Azure上的系统视图使用Entity Framework 4?,sql-server,visual-studio,entity-framework-4,Sql Server,Visual Studio,Entity Framework 4,我是实体框架的新手,所以我想尝试一些简单的东西来开始使用VisualStudio2010 假设我从以下SQL语句开始(SQL Azure上的主数据库中存在View sys.databases): 因此,我不再使用传统的ADO.NET来执行此SQL并使用DataReader将结果插入自定义类,而是尝试使用EF方式 所以我尝试创建一个实体数据模型。在向导中,我有两个选择:“从数据库生成”或“空模型”。我试图“从数据库生成”,但向导没有列出主数据库中的绝大多数视图。因此,这种方法似乎是一条死胡同。然后

我是实体框架的新手,所以我想尝试一些简单的东西来开始使用VisualStudio2010

假设我从以下SQL语句开始(SQL Azure上的主数据库中存在View sys.databases):

因此,我不再使用传统的ADO.NET来执行此SQL并使用DataReader将结果插入自定义类,而是尝试使用EF方式

所以我尝试创建一个实体数据模型。在向导中,我有两个选择:“从数据库生成”或“空模型”。我试图“从数据库生成”,但向导没有列出主数据库中的绝大多数视图。因此,这种方法似乎是一条死胡同。然后我尝试了“Empty Model”,这对这个新手来说需要更多的工作,并且坚持在“databases”前面加上“dbo”,我需要“sys”。所以我基本上被卡住了,我还没有发现任何人使用EF处理系统视图的例子


有没有人有实现这一点的详细例子?非常感谢。

创建一个新视图,返回您想要的系统视图,然后在EDMX设计中使用该视图

例如:

CREATE VIEW [dbo].[SysDatabasesView] AS SELECT * FROM sys.databases

然后使用
SysDatabasesView
而不是
sys.databases

如果目标是使用EF datacontext,请在EF中创建包含名称和创建日期的复杂类型“DB”

直接使用ExecuteStoreQuery发出查询

static readonly String dbCommand = @"select [name],create_date from sys.databases where id > 0";
context.ExecuteStoreQuery<DB>(dbCommand);
static readonly String dbCommand=@“选择[name],从sys.databases创建日期,其中id>0”;
ExecuteStoreQuery(dbCommand);

嗯。。。您只需在EDMX上添加Master DB并导入系统视图sys.databases。

这是一个针对用户数据库的聪明解决方案,但我不想(或者应该说不允许)在sys.databases所在的Master数据库上创建视图。我相信你的回答。
static readonly String dbCommand = @"select [name],create_date from sys.databases where id > 0";
context.ExecuteStoreQuery<DB>(dbCommand);