1

我的 SQL 服务器上有一个链接到 Active Directory 的链接服务器。我创建了一个视图,从 AD 中选择有关用户的相关信息。此视图没有主键。现在我想构建一个 OData 服务,它将从浏览器和我的应用程序中查询视图。我为此使用 .NET WCF 数据服务(.NET 4.0、VS2010)。但是,当我创建一个 edmx 文件并尝试导入视图时,该视图没有被导入,因为上面没有 PRIMARY KEY。我无法在视图上创建主键(在 MS SQL Server 上不可能),但我需要它能够在我的实体数据模型设计器中导入视图。我能做些什么?我怎样才能让它工作?

让我补充一点,我无法创建索引视图,因为我的视图不受架构约束(数据来自 Active Directory)。

4

1 回答 1

1

您如何尝试在一两个小时内解决问题,这真的很有趣,您决定在 SO 上发帖并在几分钟内解决您的问题......

我发现了这个:https ://stackoverflow.com/a/2715299/989256

我们遇到了同样的问题,这就是解决方案:要强制实体框架使用列作为主键,请使用 ISNULL。要强制实体框架不使用列作为主键,请使用 NULLIF。一种简单的应用方法是将视图的选择语句包装在另一个选择中。例子:

SELECT
  ISNULL(MyPrimaryID,-999) MyPrimaryID,
  NULLIF(AnotherProperty,'') AnotherProperty
  FROM ( ... ) AS temp

它工作得很好,但我有点担心性能。该视图似乎加载速度要慢得多...

于 2012-12-12T15:23:35.703 回答