草庐IT

entity_repositories

全部标签

c# - 如何使用 Moq 对 Entity Framework 6 中的删除操作进行单元测试

*更新编辑-部分解决方案-仍然需要帮助*-我发现异常只是误导。它给了我这个异常(exception),因为我得到了模拟属性被错误调用的次数。它应该被调用两次,而不是一次。那部分现在有效。但我仍然不明白为什么实体没有从列表中删除。是因为它是可查询的吗?下面是原始问题我一直在努力关注thislink学习如何单元实体框架6和6.1。但是它没有显示如何对删除操作进行单元测试。这里是我要测试的代码:publicvoidDeleteRequirement(intid){RequirementrequirementToDelete=GetRequirement(id);context.Require

c# - 外键列可以首先是 Entity Framework 6 代码中的枚举吗?

我首先将EF5DB转换为EF6代码。在旧设置中,有一些FK是字节。并且在应用程序中被映射到带有下划线字节类型的枚举。这一直很有效。首先转到代码和EF6,我发现声称枚举应该“正常工作”,而且对于常规列来说确实如此。我可以从这里开始publicbyteFavPersonality{get;set;}为此:publicPersonalityFavPersonality{get;set;}但是当涉及到也是外键的列时,我得到这个错误:System.ArgumentException:TheResultTypeofthespecifiedexpressionisnotcompatiblewitht

c# - Entity Framework 7 中是否有 DbSet<TEntity>.Local 等效项?

我需要一个ObservableCollection在EF7中,DbSet.Local似乎不存在;有什么解决方法吗? 最佳答案 当前版本的EntityFramework(RC1-final)没有DbSet.Local特性。但!您可以使用当前的扩展方法实现类似的效果:publicstaticclassExtensions{publicstaticObservableCollectionGetLocal(thisDbSetset)whereTEntity:class{varcontext=set.GetService();vardata=

c# - Entity Framework - 使用默认参数调用存储过程

我使用数据库优先在EntityFramework中映射了一些存储过程。它创建强类型方法,您可以调用这些方法来运行存储过程。然而,我遇到了一个严重的问题,因为我看不到任何方法来调用它使用存储过程中定义的默认参数创建的这些方法。这意味着:a)我必须手动将默认参数添加到方法调用中,如果默认参数值发生变化,这很脆弱。b)手工编写方法重载。这基本上消除了首先从数据库生成模型的好处。有谁知道这个问题是否有更好的解决方案?谢谢。 最佳答案 截至2013年1月,没有支持的方法让EntityFramework执行此操作。我已经打开了一个功能请求her

c# - Entity Framework 具有相同键的两个不同对象不起作用

我试图在我的主对象中插入对象引用,但如果我不使用它以前管理的对象,EntityFramework会提示。我只是想在创建对象时避免依赖dbContext。简化示例:classMovie{publicApplicationUserOwner{get;set;}}varmyMovie=db.Movies.FirstOrDefault(m,m=>m.Id=1);myMovie.Owner=newApplicationUser{Id=2};//Ihavetoattachorchangeitsstate,otherwise,EFwillcomplaintheobjectisnotcompleted

c# - Entity Framework 是否自动保存相关类?

假设我们有这样的类publicclassA{stringsomeField{get;set;}publicvirtualBB{get;set;}}publicclassB{intsomeIntField{get;set;}[ForeignKey("Id")][Required]publicvirtualAA{get;set;}}在代码中,我为它们创建了新的实例,并建立了如下关系:Aa=newA(){someField="abcd"};Bb=newB(){someIntField=42};A.B=b;B.A=a;我是否应该像这样使用DBContext来保存这两个类:using(vardb

c# - DTO 和 Entity 是否都应该有输入验证

我有一个WCF层,我的领域模型在这个WCF层后面。我正在使用Nhibernate作为ORM工具,我所有的业务逻辑/数据访问等都将在这个WCF层之后。我正在向我的客户公开DTO。我有以下问题1)我应该创建DTO吗?将实体直接暴露给wcf客户端有什么坏处,因为我的实体也会有业务逻辑方法,这样做我将不得不用我认为不好的WCF属性破坏我的实体对象?2)如果我公开DTO,我是否应该验证DTO以及实体。如果我只验证DTO,那么我不会为我的Enitity对象提供任何输入验证。这样可以吗?3)我是否应该考虑使用模式验证在应用程序服务层(WCF层)中验证DTO?或者我应该使用文章[博客]中给出的IVal

c# - 如何在类库项目中配置 Entity Framework ?

我创建了一个类库项目,其中包含EntityFramework对象,该对象将负责我的多个项目的公共(public)数据访问层。将生成的dll文件添加到我的域项目并使用类库项目中的实体对象后,我面临以下问题。在应用程序配置文件中找不到名为“ABC”的连接字符串。我已经将edmx的MetadataArtifact处理属性设置为EmbedinOutputAssembly。App.Config标记实体代码如下publicABC_IntegrationEntities():base("name=ABC"){}还有一件事:我正在从数据目录“App_Data”访问数据库。我引用的博客来自dotnetc

c# - 如何在 Entity Framework 中用 Enum 替换 Int 属性?

我有一个实体类,它的属性具有Int数据类型的基础db列,但实际上我希望这个属性是一个枚举。有什么方法可以指定此属性返回一个枚举吗? 最佳答案 间接地,如so.就个人而言,我将存储int保留为公共(public)(例如作为DbFoo,其中枚举属性为Foo)——这样我仍然可以针对列编写lambda表达式在数据库执行,例如:whererow.DbFoo==SomeConstant如果不公开存储值,就不能干净利落地做到这一点。您同样可以将其保留在内部,并在上下文中使用一些方法来进行过滤……这是我今天早些时候写的一个:publicIOrder

c# - 如何在不加载相关记录的情况下判断是否设置了Entity Framework中的Navigation Property

我不确定EF4中的导航属性,所以我想请您解释一下。让我们想象一下这个场景:一个)我的数据库中有两个实体A和B具有N对N(多对多)关系和树表A和B以及一个链接表AB有两个外键。在这种情况下,EF创建一个导航属性,我们称它为X和XReference。B)我的数据库中有两个实体A和B,关系为1到N(一对多)和两个表A和B有一个外键。在这种情况下,EF创建一个导航属性,我们将其称为Y但不是YReference。现在让我们采用场景A和B并尝试找出B中是否有任何A的引用:我的场景代码:一个):boolisA=a.XReference.EntityKey!=null;我不加载B记录(对吗?)乙):b