使用代码契约和 Linq To Sql 时如何避免“source !=null”?

2023-11-23

我有以下使用正常数据上下文的代码,效果很好:

var dc = new myDataContext();
Contract.Assume(dc.Cars!= null);
var cars = (from c in dc.Cars
            where c.Owner == 'Jim'
            select c).ToList();

但是,当我将过滤器转换为这样的扩展方法时:

var dc = new myDataContext();
Contract.Assume(dc.Cars!= null);
var cars = dc.Cars.WithOwner('Jim');

public static IQueryable<Car> WithOwner(this IQueryable<Car> cars, string owner)
{
    Contract.Requires(cars != null);
    return cars.Where(c => c.Owner == owner);
}

我收到以下警告:

警告:CodeContracts:需要未经验证:源!= null


我的猜测是,您的警告是由车主参数引起的,而不是由汽车引起的。在WithOwner方法中添加一个前提条件来检查owner是否不为null。

public static IQueryable<Car> WithOwner(IQueryable<Car> cars, string owner)
{
    Contract.Requires(cars != null);
    Contract.Requires(!string.isNullOrEmpty(owner));
    return cars.Where(c => c.Owner = owner);
}

在您的第一个代码示例中,您对“Jim”进行了硬编码,因此没有问题,因为没有任何东西可以为空。

在第二个示例中,您创建了一个方法,静态编译器无法证明源(所有者)“永远不会为空”,因为其他代码可能会使用无效值来调用它。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用代码契约和 Linq To Sql 时如何避免“source !=null”? 的相关文章

  • ASP.NET 列表视图->单击行->执行操作

    我需要以下方面的帮助 我有一个用隐藏代码填充的列表视图 Linq gt Sql ListView1 DataSource from x in database ITEMS select x ListView1 DataBind 项目内容 I
  • 多态性:ORM 实体是领域实体还是数据实体?

    我有一个 BankAccount 表 LINQ to SQL 生成一个名为 BankAccount 的类 如下所示 global System Data Linq Mapping TableAttribute Name dbo BankAc
  • 难道 Linq to SQL 没有抓住要点吗? ORM 映射器(SubSonic 等)不是次优解决方案吗?

    我希望社区能够了解我对 Linq to Sql 和其他 ORM 映射器的一些想法 我喜欢 Linq to Sql 以及用本机开发语言表达数据访问逻辑 或一般的 CRUD 操作 的想法 而不必处理 C 和 SQL 之间的 阻抗不匹配 例如 要
  • 实体框架获取前 10 行

    我在 SQL 数据库中有 3 个表 tbl视频 VideoID int PK Title varchar 100 Decription varchar 100 tblTags TagID int PK TagText varchar 100
  • 无法创建常量值 - 只允许基本类型或枚举类型

    我在这里看到了一些与此异常相关的问题 但没有一个让我理解问题的根本原因 所以这里我们还有一个 var testquery from le in context LoanEMIs Include LoanPmnt join lp in con
  • LINQ Take();当可用记录为空或少于请求的记录时如何处理?

    我想过滤结果以仅获取 X 条记录 我想知道如何Take work 在这个网站上我发现 http www hookedonlinq com TakeOperator ashx http www hookedonlinq com TakeOpe
  • 我的 DataContext 怎么错了?

    我使用 LINQ To SQL 一段时间了 我通常在解决方案中执行以下操作 在一个项目中 我创建了一个 dbml 架构 在另一个项目中 我创建了一个简单的 DataAccessLayer DAL 它了解我的第一个项目 并实例化 DataCo
  • LINQ options.loadwith 问题

    我正在编写一个基于标签的 ASP net 系统 使用以下数据库方案 Topic
  • Linq2sql:获取具有权重的随机元素的有效方法?

    Byt 可以说我有一个整数权重 即权重为 10 的元素被选择的概率是权重为 1 的元素的 10 倍 var ws db WorkTypes Where e gt e HumanId null e SeoPriority 0 OrderBy
  • SQL Server 2008 GUID 列全为 0

    我希望这是我做的一个简单的傻事 我的数据库中有一个表 设置如下 column name widget guid data type uniqueidentifier allow nulls false default value newid
  • Linq 查询可以从 Sql 数据库检索 BLOB 吗?

    Linq 查询可以从 Sql 数据库检索 BLOB 吗 他们是怎么出来的 LINQ To SQL 类为 SQL Server 中的所有二进制和 varbinary 字段创建 System Data Linq Binary 类型的属性 Bin
  • 具有两个表的谓词构建器

    A Party可以有一个或多个Contact对象 我想选择全部Parties谁的街道名称包含特定关键字 如果我只想搜索Party我可以使用下面的代码 但我如何扩展它来搜索Contact public IQueryable
  • 将属性名称作为字符串传递到方法中 .NET

    我正在将 LINQ to SQL 用于 NET MVC 应用程序 在我的数据库中 我有一堆包含 Y 或 N 值的列 我正在尝试编写一个通用方法 该方法将返回数据库中的所有记录columnName Y 到目前为止我已经得到了这个 public
  • LINQ to SQL:从位于不同服务器上的两个数据库获取记录

    我需要从两个不同的表中获取记录 数据库位于两个不同的 SQL Server 中 例如 销售数据库位于服务器 1 上 采购数据库位于服务器 2 上 销售和采购数据库都有一些表集 例如销售数据库中的 table1 和采购数据库中的 table2
  • 在 LINQ 查询中返回不带时间的日期

    我正在编写一个查询 我想计算按日期联系我们的呼叫中心的次数 看起来很简单 但由于联系日期字段是日期时间字段 我得到了时间 因此当我按联系日期 时间 分组时 每个联系日期实例的计数为 1 所以 我想只按日期分组 而不按时间分组 下面是我用来查
  • 在 LINQ-SQL 中,将 DataContext 包装为一个 using 语句 - 优点 缺点

    有人可以从性能 内存使用 编码的简易性 正确的做法等因素方面阐述将 DataContext 包装在 using 语句中或不在 LINQ SQL 中之间的优缺点吗 Update 在一个特定的应用程序中 我发现 如果没有将 DataContex
  • 存储库模式和 Linq to sql

    我正在尝试使用角色表 用户表和具有用户 ID 角色 ID 的外部参照表来实现用户身份验证和授权 为了实现通用存储库来更新角色 插入角色 添加用户 将用户添加到角色 更新用户 更新用户角色 验证用户 添加用户会话进行审核等 我是否需要为每个存
  • 使用 Linq to SQL 进行 NOLOCK

    是否有可能让 Linq2Sql 在其 SQL 中发出 NOLOCK 如果是这样 怎么办 是的 所以这是条目来自我的博客 http www madprops org blog linq to sql and nolock hints NOLO
  • LINQ to SQL 支持 POCO 吗?

    如果我想使用一个对象并利用 LINQ to SQL 我需要添加什么 如果有的话 到我的实体类中以确保我的应用程序可以与数据存储对话 此处不要讨论存储库模式 因为我只是在寻找业务对象内所需的内容 除了使用 LINQ to SQL 设计器并让它
  • 如何使用 LINQ2SQL 连接两个不同上下文的表?

    我的应用程序中有 2 个数据上下文 不同的数据库 并且需要能够通过上下文 B 中的表的右连接来查询上下文 A 中的表 我该如何在 LINQ2SQL 中执行此操作 Why 我们正在使用 SaaS 产品来跟踪我们的时间 项目等 并希望向该产品发

随机推荐

  • 连接逗号分隔的数据列

    我的表1是 T1 col1 col2 C1 john C2 alex C3 piers C4 sara 表2 T2 col1 col2 R1 C1 C2 C4 R2 C3 C4 R3 C1 C4 如何产生这个结果 查询结果 col1 col
  • 未检测到多处理池中引发的异常

    似乎当 multiprocessing Pool 进程引发异常时 没有堆栈跟踪或任何其他指示它已失败 例子 from multiprocessing import Pool def go print 1 raise Exception pr
  • 在所有数据库中搜索列名

    我有一个查询 可以查找与某个数据库的列名匹配的所有表和视图 我在用SQL服务器2008 SELECT table name FROM information schema columns WHERE column name product
  • 替换 ASP.net MVC 核心中的 DefaultModelBinder

    我正在将 MVC 5 项目转换为核心项目 我目前有一个自定义模型绑定器 用作我的 nhibernate 实体模型绑定器 我可以选择通过从数据库中获取实体然后调用基本 DefaultModelBinder 将请求中的修改数据绑定到实体中来获取
  • lambda 表达式的可变参数模板

    使用 g 执行此操作的正确方法是什么 template lt typename F gt void g F f template lt typename A gt void h A a template lt typename A gt v
  • 如何从命令行运行 zeppelin 笔记本(自动)

    我们如何从命令行运行笔记本 除了 1 之外 我如何将命令行参数传递到笔记本中 IE 从笔记本代码中访问命令行参数 所以我遇到了同样的问题 并设法弄清楚如何使用 API 来使用curl 运行笔记本 至于传递命令行参数 我认为根本没有办法做到这
  • 如何将 WordPress 集成到 Kohana 3 中

    我现在需要让 Kohana 3 网站拥有一个 Wordpress 博客 我见过柯克尼斯用于 WordPress 的 Kohana 但这似乎与我想要的相反 这是我想到的选项 设计一个模板 使其看起来与 Kohana 网站一模一样 耗时 非 D
  • 如何在 ASP.NET 项目中正确引用 JavaScript 文件?

    我有一些引用 javascript 文件的页面 该应用程序本地存在于虚拟目录中 即http localhost MyVirtualDirectory MyPage aspx 所以在本地我引用这些文件如下 但生产设置有所不同 该应用程序在生产
  • Erlang:可以在没有列表的情况下完成:reverse 吗?

    我是一个学习 Erlang 的初学者 在阅读了 Erlang 中的列表推导和递归之后 我想尝试实现我自己的map函数 结果是这样的 Map Map all elements in a list by a function map List
  • 如何关闭 html5 颜色选择器?

    在 OSX 上的 chrome 中 当您使用 type color 的输入选择颜色时
  • Visual Studio 2015 发布 WebJobs 问题

    在 VisualStudio 2015 中使用右键单击 发布为 Azure WebJob 选项 可以发布作业 但运行模式似乎被忽略 在我的文件中 我有以下设置 但是发布后该作业会在门户中不断设置为按需作业 schema http schem
  • 如何在winforms中使用EF进行双向数据绑定?

    我对编码很陌生 现在我要告诉你我现在的情况以及我想去的地方 希望你能帮忙 我使用 EF5 0 数据库优先方法 我希望能够使用 gridviews 列出和更新数据库值 目前我正在像这样绑定我的数据 pehlivan kabametrajEnt
  • 字符串到字符列表

    我想知道是否可以将字符串转换为字符列表 jt5x gt j t 5 x 本质上 会是吗 example String gt Char 收集评论为答案 因为在 haskell 中 String is字符列表 即 Char 只需返回给定的输入即
  • 安装 GoogleTest 后如何在 Visual Studio 2017 中配置 GoogleMock?

    我将 Microsoft googletest v140 windesktop msvcstl static rt dyn 包安装到我的 VS 2017 应用程序解决方案中 这是通过 添加新项目 其他语言 C 测试 Google Test
  • 从 NSObject 类调用presentModalViewController

    在我的子类中NSObject我想打电话给类似的东西 self navController presentModalViewController myView animated YES 但我的尝试都没有成功 如果我不在 的子类中 如何调用模态
  • RStudio README.Rmd 和 README.md 都应该分阶段使用“git commit --no-verify”来覆盖此检查

    我正在使用 RStudio 其中有 README Rmd 和 README md 文件 但是 当我只更改 README Rmd 并想要提交并将其推送到 GIT 时 我得到以下信息 RStudio README Rmd 和 README md
  • 如何使用 Android 版 Phonegap 调用远程 API?

    如何使用 Phonegap 在 Android 应用程序中进行远程 API 调用 只需使用 XmlHttpRequest 与您的服务器进行通信即可 这是我的股票示例 它从 Twitter 获取推文列表 http simonmacdonald
  • “查找给定二进制文件中的所有代码相当于停止问题。”真的吗?

    刚刚在读书关于模拟器的高票问题和声明 事实证明 找到所有 给定二进制文件中的代码是等效的 停止问题 真的很让我印象深刻 这肯定不是真的吗 这不就是一个很大的依赖图吗 如果您能进一步了解此声明 我将不胜感激 我不同意拉斯曼的观点 停止问题表明
  • R:使用省略号参数列表

    我遇到了一种情况 我需要将传递给 R 函数的所有额外参数并将它们滚动到一个对象中以供以后使用 我以为上一个关于椭圆的问题in 函数会对我有帮助 但我仍然不太明白如何做到这一点 这是我想做的一个非常简单的例子 newmean lt funct
  • 使用代码契约和 Linq To Sql 时如何避免“source !=null”?

    我有以下使用正常数据上下文的代码 效果很好 var dc new myDataContext Contract Assume dc Cars null var cars from c in dc Cars where c Owner Jim