【发布时间】:2018-09-04 00:21:52
【问题描述】:
所以我有这个查询
var pac = from p in context.pacientebi where p.personalid == piradinomeri select p;
它会生成这个 sql
SELECT
[Extent1].[id] AS [id],
[Extent1].[name] AS [name],
[Extent1].[surname] AS [surname],
[Extent1].[dateofbirth] AS [dateofbirth],
[Extent1].[personalid] AS [personalid],
[Extent1].[phonenumber] AS [phonenumber],
[Extent1].[sqesi] AS [sqesi],
[Extent1].[address] AS [address],
[Extent1].[shemosvlisdro] AS [shemosvlisdro],
[Extent1].[email] AS [email]
FROM [dbo].[pacientis] AS [Extent1]
WHERE ([Extent1].[personalid] = @p__linq__0) OR (([Extent1].[personalid] IS NULL) AND (@p__linq__0 IS NULL))
并且不返回任何值,如果我将表名更改为包含数据库名 像这样
FROM [dbo].[pacientis]
到这里
[CachedeskBase].[dbo].[pacientis]
一切都很好。 那么为什么 linq to slq 会生成不完整的查询呢?
【问题讨论】:
-
如果您必须指定数据库,则您连接到错误的数据库。另外,LINQ2SQL 和 Entity Framework 是不同的产品,请仅说明您正在使用的产品
-
这只是 linq 生成的查询没有指定数据库名称,如果单击选择同一张表上的前 1000 行生成的查询包括数据库名称 linq 生成的一个没有。那我做错了什么?
-
@giorgi SSMS 可以包含它,因为当您右键单击表/视图并选择“查看前 1000 行”时,它知道该表属于哪个数据库。当您在查询中删除数据库指针时,它仍然可以工作,因为 SSMS 还将连接/脚本的默认数据库设置为同一个数据库。您可以通过查看 SSMS 窗口左上角的下拉菜单来查看/设置当前查询/连接/脚本指向的数据库。例如:imgur.com/a/Uuq4l。实体框架无法知道一张表属于哪个数据库。
-
非常感谢 Guillaume Mercier 从下拉菜单更改数据库
标签: c# .net visual-studio entity-framework linq