如何让MS LightSwitch识别我的视图?

时间:2012-03-27 18:43:16

标签: sql-server tsql sql-server-2008-r2 visual-studio-lightswitch

我从另一个数据库的表中创建了一个View。我拥有数据库的dbo权限,因此查看和更新​​不是问题。此特定视图没有“id”列。所以我使用ROW_NUMBER在View中添加了一个。现在我遇到了一个表,在同一个数据库中没有出现在LightSwitch中,但是通过将id列更改为NOT NULL来解决这个问题。我没有在LightSwitch中做过任何真正的操作。我仍处于导入您的数据源阶段(即刚开始)。

LightSwitch中的此视图将是只读的。没有更新或删除。根据我的阅读,LightSwitch需要一种方法来确定表或视图的PK。它要么从模式中读取它(列设置为PK),要么将列设置为NOT NULL并将其用作PK。好吧,我似乎无法在SQL Server或LightSwitch中执行这些操作,因此我不知道如何让LightSwitch“看到”我的视图。

2 个答案:

答案 0 :(得分:2)

要求lightswitch查看您的视图,您必须在要选择的表的列上有一个主键。 例如:

create table tbl_test
(
id int identity primary key not null,
value varchar(50)
)

create view vw_test
as
select *
from tbl_test

注意:有时在视图选择语句中编辑主键列时,可能会导致lightswitch看不到它

示例:

create view vw_test
 select cast(id as varchar(50) id,...

lightswitch不会看到表

希望这有用! :)

答案 1 :(得分:0)

在这种情况下我做的是创建一个ID列等于行号的视图。使用isnull()或coalesce()函数确保您基于ID的列不为null。

示例:

create view as
select distinct ID = row_number() over (order by isnull(Name,'')), 
Name = isnull(Name,'')
from My_Table