Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >使用EF Code First示例的代码契约和Fluent API

使用EF Code First示例的代码契约和Fluent API
EN

Stack Overflow用户
提问于 2011-04-19 11:12:27
回答 2查看 957关注 0票数 3

考虑下面的代码片段:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
public partial class DatabaseContext : DbContext
{
    protected override void OnModelCreating(DbModelBuilder modelBuilder)
    {
        Contract.Assume(modelBuilder != null);

        modelBuilder.Entity<User>()
            .HasOptional(x => x.Profile).WithRequired(x => x.User);

        base.OnModelCreating(modelBuilder);
    }
}

在第8行(.HasOptional,.WithRequired)代码契约分析工具生成以下两个警告:"CodeContracts:可能调用空引用上的方法“

有没有什么办法来处理它呢?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-04-19 12:41:57

一个选项是用ContractVerification(false)属性标记整个方法:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
public partial class DatabaseContext : DbContext
{
    [ContractVerification(false)]
    protected override void OnModelCreating(DbModelBuilder modelBuilder)
    {
        modelBuilder.Entity<User>()
            .HasOptional(x => x.Profile).WithRequired(x => x.User);

        base.OnModelCreating(modelBuilder);
    }
}

的另一个是添加几十个Contract.Assume()检查:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
public partial class DatabaseContext : DbContext
{
    protected override void OnModelCreating(DbModelBuilder modelBuilder)
    {
        Contract.Assume(modelBuilder != null);

        var userEntity = modelBuilder.Entity<User>();
        Contracts.Assume(userEntity != null);
        var profileEntity = userEntity.HasOptional(x => x.Profile);
        Contracts.Assume(profileEntity != null);
        profileEntity.WithRequired(x => x.User);

        base.OnModelCreating(modelBuilder);
    }
}

我们还有其他选择吗?你喜欢哪一种?

票数 2
EN

Stack Overflow用户

发布于 2011-04-19 11:33:31

我不知道EF,但我相信你不能直接调整.Entity<User>()函数?此函数不指定它返回非空值的约定。尝试执行以下操作:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
var userEntity = modelBuilder.Entity<User>();
Contract.Assert( userEntity != null );

附言:我找到了这个链接,你可能会感兴趣,discussing Code Contracts and Entity Framework

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5715456

复制
相关文章
EF Code First 学习笔记:关系
项目中最常用到的就是一对多关系了。Code First对一对多关系也有着很好的支持。很多情况下我们都不需要特意的去配置,Code First就能通过一些引用属性、导航属性等检测到模型之间的关系,自动为我们生成外键。观察下面的类:
跟着阿笨一起玩NET
2018/09/19
7630
EF Code First 学习笔记:关系
WCF Data Services 5.0 和 EF 4.3 Code First
WCF Data Services 5.0已经在4月9日发布,支持OData V3版本的协议。之前版本的WCF Data Services是随.NET FX 4.0发布的,这次是单独提供了安装包下载。这个版本有几个特性很不错,具体参看文章 http://blogs.msdn.com/b/writingdata_services/archive/2012/04/09/my-favorite-things-in-odata-v3-and-wcf-data-services-5-0.aspx。 新特性主要用于支持
张善友
2018/01/29
8890
(转载)EF 使用code first模式创建数据库和 填充种子数据
第一篇:来自 .net 开发菜鸟 博主的文章:https://www.cnblogs.com/dotnet261010/p/8035213.html
CherishTheYouth
2019/09/11
8510
MVC Code First (代码优先)
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/116945.html原文链接:https://javaforall.cn
全栈程序员站长
2022/07/06
9050
MVC Code First (代码优先)
EF 数据库连接约定(Connection String Conventions in Code First)
一个典型的EF应用大多数情况下是一个DbContext的派生类(derived class)来控制,通常可以使用该派生类调用DbContext的构造函数,来控制以下的东西: (1)、上下文如何连接到数据库(给定连接字符串) (2)、上下文是通过Code First语法计算模型还是使用EF 设计器 (3)、额外的高级选项 下面是DbContext构造器的常用的用途: 一、DbContext无参构造函数 如果当前EF应用中没有做任何的配置.且在你自定义的数据库上下文类中没有调用DbContext带参的构造函数,
郑小超.
2018/01/26
1.5K0
VS2010+EF Code First 4.1学习MVC3(三)
htmlHelper 和UrlHelper 类,这是我们在View层进行页面显示组件的常用类或者是唯一类,但是我们又对它了解哪些呢?我们了解为什么可以使用htmlHelper类?因为使用了扩展方法,我们自己是否可以正确的定义一些helper类来满足我们自己的业务需求,对于扩展方法我们又理解多少?htmlHelper类中的那几个方法我们是否完全的掌握?
Isaac Zhang
2019/09/10
4660
VS2010+EF Code First 4.1学习MVC3(三)
关于EF Code First模式不同建模方式对建表产生的影响
今天在学EF Code First模式的时候,发现几个很有趣的问题,问题如下: 1、当编写玩实体后,不指定任何主键约束,EF会找长的最像Id的,然后设置其为主键,验证代码如下: //User类 class User { public Guid UserId { get; set; } public string Name { get; set; } } class CodeFirstContext:DbContext {
郑小超.
2018/01/26
9900
VS2010+EF Code First 4.1学习MVC3(二)
在MVC中,Area使我们的业务逻辑更加清晰,为我们后期的维护带来了极大的便利,那么今天我就来啃啃这一块的东西,可以很方便的替代UrlRouting的一些功能哦~~
Isaac Zhang
2019/09/10
4450
VS2010+EF Code First 4.1学习MVC3(二)
VS2010+EF Code First 4.1学习MVC3(一)
这里的环境只有VS2010,EF CF4.1,继续加入Jquery EasyUI,做一个用户列表(选中,编辑,删除,新增)
Isaac Zhang
2019/09/10
5020
VS2010+EF Code First 4.1学习MVC3(一)
再谈 API 的撰写 - 契约
现代社会是个契约社会,生活中大大小小的事情都在和契约打交道。去奥莱买件衣服,一纸小票,便是你跟商家的契约:你花钱买到了产品,产品的问题商家会承诺处理(退换货)。如果你用信用卡交款,你和银行之间,银行和商家之间又达成了一系列契约:银行会在未来的某个时刻扣除你的 credit,这 credit 你需要用钱来赎回;银行同时欠下商户几乎等值的 credit,这 credit 会在月末付给商户。 契约 契约在软件上最基本的体现就是函数。当一个函数被定义出来时:它告诉它的使用者,你我之间应该如何合作。 比如说,一个函数
tyrchen
2018/03/28
1.6K0
再谈 API 的撰写 - 契约
Entity Framework Fluent API
使用DataAnnotation非常简单,但对于EntityFramework中的特性,就要在实体类中引入EntityFramework程序集,但实体类最好能是保持与架构无关性的POCO类,才能更具通用性。所以,最好是在数据层中使用FluentAPI在数据层中进行实体类与数据库之间的映射工作。从功能上而言Data Annotations是Fluent API的一个子集, Data Annotations可以实现的功能Fluent API都能实现。
aehyok
2018/09/11
8660
Entity Framework Code-First 文章汇集
为了支持以设计为中心的开发流程,EF4 还更多地支持以代码为中心 (code-centric) ,我们称为代码优先的开发,代码优先的开发支持更加优美的开发流程,它允许你: 在不使用设计器或者定义一个 XML 映射文件的情况下进行开发。 允许编写简单的模型对象POCO (plain old classes),而不需要基类。 通过"约定优于配置",使得数据库持久层不需要任何的配置 也可以覆盖"约定优于配置",通过流畅的 API 来完全定制持层的映射。 使用Code first这个模式后,你的项目中可以说就不再需
张善友
2018/01/30
7850
Entity Framework 约定
约定,类似于接口,是一个规范和规则,使用Code First 定义约定来配置模型和规则。在这里约定只是记本规则,我们可以通过Data Annotaion或者Fluent API来进一步配置模型。约定的形式有如下几种:
喵叔
2020/09/08
1.3K0
Fabric示例——first network
1.环境部署 包括需要的软件环境以及docker镜像,具体参考http://zhayujie.com/fabric/deploy.html
zhayujie
2020/04/29
2.1K0
协程取消 API 的示例代码
Co::yield 用于手动让出当前协程的执行权。此方法拥有另外一个别名:Co::suspend()
沈唁
2021/06/25
4600
Spring Boot 特性之 Fluent Builder API
Spring Boot 提供了一个流式调用的构建器 API,用来创建 SpringApplication 实例、提供 ConfigurableApplicationContext 上下文支持。
FoamValue
2020/08/31
1.4K0
ef和mysql使用(一)
这里为什么要写ef和mysql的使用,ef默认连接的sqlserver ,使用起来可能会比较顺手,ef和mysql使用的时候会出现各种问题,所以这里就搞mysql,要有一颗勇于出错的心。
yaphetsfang
2020/07/30
1K0
EF基础知识小记六(使用Code First建模自引用关系,常用于系统菜单、文件目录等有层级之分的实体)
日常开发中,经常会碰到一些自引用的实体,比如系统菜单、目录实体,这类实体往往自己引用自己,所以我们必须学会使用Code First来建立这一类的模型. 以下是自引用表的数据库关系图: ok,下面开始介
郑小超.
2018/01/26
9070
快递鸟Java SDK的功能介绍、API介绍和示例代码
快递鸟(KDNiao)是一家提供物流信息查询和管理的云服务平台,并提供了Java SDK供开发者接入。以下是快递鸟Java SDK的功能介绍、API介绍和示例代码:
疯狂的KK
2023/03/26
7050
chatgpt api基础使用示例
url: POST https://api.openai.com/v1/completions
Alan_1
2023/05/05
6120

相似问题

EF代码-First- Fluent API映射

14

EF Code First Fluent API定义唯一约束

40

使用EF 4.1 Fluent Code First的每个类型的表继承

13

EF Code First 5-如何使用Fluent API定义可以为空的外键?

20

用于曲目和专辑模型的EF5 Code First Fluent EntityTypeConfiguration

22
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
社区富文本编辑器全新改版!诚邀体验~
全新交互,全新视觉,新增快捷键、悬浮工具栏、高亮块等功能并同时优化现有功能,全面提升创作效率和体验
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文