我从另一个数据库的表中创建了一个View。我拥有数据库的dbo权限,因此查看和更新不是问题。此特定视图没有“id”列。所以我使用ROW_NUMBER在View中添加了一个。现在我遇到了一个表,在同一个数据库中没有出现在LightSwitch中,但是通过将id列更改为NOT NULL来解决这个问题。我没有在LightSwitch中做过任何真正的操作。我仍处于导入您的数据源阶段(即刚开始)。
LightSwitch中的此视图将是只读的。没有更新或删除。根据我的阅读,LightSwitch需要一种方法来确定表或视图的PK。它要么从模式中读取它(列设置为PK),要么将列设置为NOT NULL并将其用作PK。好吧,我似乎无法在SQL Server或LightSwitch中执行这些操作,因此我不知道如何让LightSwitch“看到”我的视图。
答案 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