繁体   English   中英

如何在SQL Server中的列上创建主键,或者如何在EDM设计器中导入没有PK的视图?

[英]How to create a primary key on a column in SQL Server or how to import a view without PK in EDM designer?

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

我要补充一点,因为我的视图没有架构绑定(数据来自Active Directory),所以我无法创建索引视图。

尝试解决一两个小时的问题,决定在SO上发布并在几分钟之内解决问题,真是有趣。

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

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

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

效果还不错,但是我有点担心性能。 该视图加载速度似乎慢得多...

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM