草庐IT

contract-first

全部标签

c# - 自动实现属性的代码契约(Contract)

有什么方法可以在.NET中将契约放在自动实现的属性上吗?(如果答案是"is"怎么办)?(我假设使用来自DevLabs的.NET代码契约(Contract)) 最佳答案 是的,这是可能的-所需要的只是将您的契约(Contract)条件添加到类中的[ContractInvariantMethod]方法中,然后添加等效的Requires前提条件到自动setter,并将后置条件Ensures添加到get。来自Reference的第2.3.1节Astheexampleillustrates,invariantsonauto-propertie

c# - FK到同表Code First Entity Framework

我是EntityFramework中代码优先方法的新手。我对如何做到这一点感到有点困惑:我需要与同一个表的FK关系,这样我就可以在元素之间建立父-->子关系。这是表格的模型:publicclassBucketGroup{publicintId{get;set;}//ThisisthePKintheTablepublicstringName{get;set;}//NowthistheFK,tothisSameTable:publicint?BucketGroupId{get;set;}}所以我将这个项目设置为Nullable,如果BucketGroupId为NULL,那么我知道它是一个父

c# - 将 EF6 Code First 字符串流畅地设置为 nvarchar(max)

我正在使用FluentAPI构建EF6代码优先模型。我的理解是,默认情况下,字符串将是nvarchar(max),(坦率地说)对于默认值来说是愚蠢的。所以我添加了以下约定代码以将最大默认长度设置为255个字符:modelBuilder.Properties().Configure(p=>p.HasMaxLength(255));然后我像这样创建了一个装饰器:[AttributeUsage(AttributeTargets.Property,AllowMultiple=false,Inherited=true)]publicclassTextAttribute:Attribute{}我想

c# - 如何在 Entity Framework Code First 中以编程方式使用迁移?

我在一个使用EFCodeFirst的项目中工作。我正在尝试使用迁移功能。我不想使用包控制台管理器。如何以编程方式执行“添加迁移”和“更新数据库”?add-migrationTestMigration01-forceupdate-database 最佳答案 您有几个选择。您可以在代码中使用dbmigrator类:http://romiller.com/2012/02/09/running-scripting-migrations-from-code/或者您可以使用migrate.exe,它可以方便地在构建步骤等中运行它们。https:

c# - 如何安装和使用 Code Contracts?

我有一个基本问题,可能很明显,但出于某种原因,我似乎无法成功安装和使用代码契约(Contract)。我已经从MSDN下载了这个包,并按照在线文档安装了它,但我仍然收到针对以下代码语句的IDE警告:Contract.Requires(inputParameter!="");IDE警告是:“跳过方法调用。编译器不会生成方法调用,因为该方法是有条件的,或者是没有实现的部分方法”在启用代码契约的过程中我遗漏了什么吗?我正在使用VS2010UltimateSP1 最佳答案 这很可能是由于未在项目设置中配置代码契约(Contract)。如果你去

c# - EF Code First 不为 ICollection<string> 生成表

我想要我的一个数据类中的以下ICollection属性(我们称它为“Foo”)publicclassFoo{[Key]publicintFooId{get;set;}publicstringSomeValueOrOther{get;set;}publicvirtualICollectionAllowedBars{get;set;}}我可以在使用实体上下文时添加字符串值,但它们不会“去任何地方”。换句话说,不会生成表示此关系的表,因此不会保存任何值。我期望的是一个包含两列的表,一列用于“FooId”,一列用于“AllowedBar”,EF会自动将其映射到集合(就像它在复杂类型中所做的那样

c# - Entity Framework DB-First,实现继承

我正在尝试使用EntityFramework6.0和数据库优先方法实现继承。好的,假设我有一个Person和一个Organization实体,如下所示://asimplifiedversionoforganizationentitypublicclassOrganization{publicGuidID{get;set;}publicstringNickname{get;set;}publicstringEmail{get;set;}publicstringPhoneNumber{get;set;}publicstringOfficialName{get;set;}publicGuid

c# - 努力单元测试 Entity Framework 6.1.3 DB-first

我在使用Effort框架(版本1.1.4)对我的DB层进行单元测试时遇到问题。我有一个使用EntityFramework6.1.3的DB层,并且模型是使用数据库优先方法创建的,因此有一个描述模型的*.edmx文件。我已经创建了一个分部类来公开单元测试使用的附加构造函数,如下所示:publicpartialclassEntities{publicEntities(DbConnectionconnection):base(connection,true){}}简单的单元测试看起来像这样:privateEntitiesCreateContext(){//varconnectionString

c# - 代码契约(Contract)的好处

我为什么要使用像这样的代码契约Contract.Requires(x!=null,"x");而不是旧的if(x!=null){}elsethrow...除了简洁还有其他好处吗? 最佳答案 根据MSDN:Thebenefitsofcodecontractsincludethefollowing:Improvedtesting:Codecontractsprovidestaticcontractverification,runtimechecking,anddocumentationgeneration.Automatictesting

c# - Entity Framework 6 : Code First Cascade delete

所以这里有几个类似的问题,但我仍然无法确定在我的简化场景中到底缺少什么。假设我有以下表格,巧妙地以我自己的名字命名:'JohnsParentTable'(Id,Description)'JohnsChildTable'(Id,JohnsParentTableId,Description)生成的类看起来像这样publicclassJohnsParentTable{publicintId{get;set;}publicstringDescription{get;set;}publicvirtualICollectionJohnsChildTable{get;set;}publicJohns