You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为什么视图中使用ROW_NUMBER生成的列会被标记为可空?

问题解决办法

方法1:修改视图(推荐,一劳永逸)

SQL Server默认会将ROW_NUMBER()窗口函数生成的列标记为可空,哪怕实际运行时不会出现NULL值。我们可以用ISNULL函数强制标记该列为非空,改写视图中最后一段SELECT逻辑即可:

SELECT
    *,
    -- 用ISNULL包裹,第二个参数传入固定常量,告诉SQL Server这列永远不会为NULL
    ISNULL(ROW_NUMBER() OVER (ORDER BY FullLibelle), 0) AS Id 
FROM
    (SELECT    
         IdTypeArticle, IdTypeArticleParent, Logo, Libelle, 
         FullLibelle, Racine 
     FROM cte) AS CTE1

修改完视图后重新生成/刷新EDMX模型,Id列会被自动识别为非空,可直接设置为实体主键。

方法2:EDMX手动配置(无需修改数据库视图)

如果不方便修改生产环境的视图,可以直接在EDMX设计器中手动调整配置:

  • 打开EDMX设计界面,找到对应视图生成的实体
  • 选中Id列,右键打开属性面板,将可空属性设置为False
  • 再次右键点击Id列,选择「实体键」选项,将该列设为主键
  • 保存EDMX文件,重新生成实体类代码即可

注意:如果后续执行了「从数据库更新模型」操作,手动修改的EDMX配置可能会被覆盖,因此优先推荐使用方法1。


内容的提问来源于stack exchange,提问作者YannickIngenierie

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.05 13:27:05