【问题标题】:How can I convert sql to linq如何将 sql 转换为 linq
【发布时间】:2013-05-22 06:37:23
【问题描述】:

这是我的 SQL 查询

SELECT 
sys.sysobjects.name Name,
sys.foreign_keys.*
FROM 
sys.foreign_keys 
inner join sys.sysobjects on
    sys.foreign_keys.parent_object_id = sys.sysobjects.id
WHERE 
referenced_object_id = OBJECT_ID(N'[dbo].[Country]') 

我已经安装了 Linqer 来将 SQL 转换为 linq。 但是我得到了一个错误:

SQL 无法转换为 LINQ:在当前数据上下文中找不到表 [foreign_keys]。

我是 Linq 的初学者。谁能帮我将 SQL 转换为 Linq

【问题讨论】:

标签: asp.net-mvc-3 linq linq-to-sql asp.net-mvc-4 sql-to-linq-conversion


【解决方案1】:

问题是系统视图不会被 Linqer 拾取。如果您想在应用程序中读取这些表,请首先在它们上创建自己的视图,就像 here 所做的那样,然后在这些视图上编写查询。

CREATE VIEW SysObjectsView AS SELECT * FROM sys.sysobjects;
GO
CREATE VIEW SysForeignKeysView AS SELECT * FROM sys.foreign_keys;
GO

SELECT obj.name Name, fk.*
FROM SysForeignKeysView fk
INNER JOIN SysObjectsView obj ON fk.parent_object_id = obj.id
INNER JOIN SysObjectsView objfk ON fk.referenced_object_id = objfk.id
WHERE objfk.name = N'Country' 

Linqer 应该能够获取这些视图。

【讨论】:

  • 是否可以在 mvc3 中使用 linq 获取相关的表名。我发布的代码运行良好,但是我必须在 mvc3 中使用它
  • 使视图成为 linq-to-sql 上下文的一部分。
  • 当我在 Linqer 中发布您的代码时出现错误“错误编译表达式:字符文字中的字符过多”
猜你喜欢
  • 2023-03-18
  • 1970-01-01
  • 1970-01-01
  • 2015-10-02
  • 2011-02-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多