草庐IT

c# - 将动态表达式传递给代码优先 EF 存储库中的排序依据

我们编写了一个通用函数,以存储库模式首先从EF代码中获取记录。休息似乎没问题,但是当将整数传递给动态订单时,它说CannotcastSystem.Int32toSystem.Object表达式如下:Expression>orderByFunc=o=>o.Id;if(options.sort=="Id"){//thisisanIntegerorderByFunc=o=>o.Id;}if(options.sort=="Name"){//stringorderByFunc=o=>o.Name;}if(options.sort=="Code"){orderByFunc=o=>o.Code;}泛

c# - DbSet<>.Local 是否需要特别小心使用?

几天来,我一直在努力从存储库(DbContext)中检索我的实体。我正在尝试将所有实体保存在一个原子操作中。因此,不同的实体一起代表对我有值(value)的东西。如果所有实体都是“有效”的,那么我可以将它们全部保存到数据库中。实体“a”已存储在我的存储库中,需要检索以“验证”实体“b”。这就是问题所在。我的存储库依赖于DbSet与Linq2Sql一起工作的类(Include()导航属性,例如)。但是,DbSet不包含处于“已添加”状态的实体。所以我(据我所知)有两个选择:使用ChangeTracker查看哪些实体可用并根据其EntityState将它们查询到一个集合中.使用DbSet.

C# 显示错误 'Delegate ' System.Func<...>' does not take 1 arguments

我打电话:form=newFormFor().Set(x=>x.Name,"hi");其中Project有一个名为Name的字段,FormFor的代码是:publicclassFormForwhereTEntity:class{FormCollectionform;publicFormFor(){form=newFormCollection();}publicFormForSet(Expression>property,stringvalue){form.Add(property.PropertyName(),value);returnthis;}}但它一直告诉我Delegate'Sy

c# - 数据访问层的设计模式

您可能会觉得这是作业,对此我很抱歉。我进行了搜索,但找不到合适的答案。所以我的问题是:我有几个类,每个类都有一个保存方法。所以我为数据库处理创建了一个单独的类。namespaceHospitalMgt.Data{publicstaticclassDBConnection{publicstaticstringconstr="DataSource=ABD;InitialCatalog=HospitalMgt;UserId=sa;Password=123";publicstaticSqlConnectioncon;//publicstaticSqlCommandcom;publicstati

c# - 我应该将通用存储库与 Entity Framework 5 一起使用吗?

我目前正在使用具有通用存储库和工作单元模式的EntityFramework。我的模型类似于thisarticle中描述的模型我过去使用过GenericRepositories,非常喜欢它提供的全局功能。但是,在将它与EntityFramework一起使用时,我似乎每天都会遇到更多问题。在处理父/子/联结关系时,这些问题似乎会出现更多。将通用存储库与EF结合使用开始给我留下不好的印象,我开始认为将通用存储库与EF结合使用是错误的方法。有人可以帮我指引正确的方向吗? 最佳答案 本文的方法确实会成为一种痛苦,因为您已经在EF中拥有一个通用

c# - 使用 LINQ for Entity Framework 将实体转换为通用方法中的已实现接口(interface)

我有一个通用方法来查询EF中TEntity类型的对象。如果TEntity实现特定接口(interface),我想将条件添加为where子句。我的方法是:publicTEntityGetByUserID(GuiduserID){varquery=this.DbSet;if(typeof(TEntity).IsImplementationOf()){query=query.Where((x=>!((IDeletableEntity)x).IsDeleted);}returnquery.FirstOrDefault(x=>x.UserID==userID);}IsImplementation

c# - 如何将多个表达式传递给 EF 的 OrderBy?

我使用的是EF4.2,但我希望这也适用于EF4和4.1。我想传递一个IQueryable和多个Expression>到一个方法并应用该方法OrderBy和ThenBy到IQueryable视情况而定。我找到了thisanswer,并据此编写了如下方法:publicIQueryableApplyOrderBy(IQueryablequery,IEnumerable>>orderBy){if(orderBy==null){returnquery;}IOrderedQueryableoutput=null;foreach(varexpressioninorderBy){if(output==

c# - 如何在 autofac 中注册通用接口(interface)的所有实现?

我已经创建了通用接口(interface),假设将实体映射到View模型并向后映射。我必须在autofac配置中进行大约80次注册。是否可以将它们注册为批处理?这是界面:publicinterfaceICommonMapperwhereTEntity:BaseEntitywhereTModel:BaseEntityViewModelwhereTKey:struct{TModelMapEntityToModel(TEntityentity);TModelMapEntityToModel(TEntityentity,TModelmodel);TEntityMapModelToEntity(

c# - .NET对不同参数重载方法的误解(Call Ambiguous)

我有一些重载方法的问题,我会尝试给出一个简单的实现。所以这是一个包含以下两个方法的类:publicclassMyRepo{publicListGetData(Expression>expression){//Dosomething}publicListGetData(FuncwhereClause){//Dosomething}}这是我的实体:publicclassMyEntity{publicintId{get;set;}publicstringName{get;set;}}这里是我使用它的地方:{...MyRepomyRepo=newMyRepo();myRepo.GetData(

c# - 如何使用 Autofixture 创建和填充模拟类?

目前我正在使用EF6在UnitOfWork中实现我的存储库。我还创建了一个内存中模拟实现(MockUnitOfWork&MockRepository),以便我可以在单元测试中使用它们,但是我现在必须处理对象的繁琐设置。这不是Autofixture的设计目的吗?我将如何获得可以在我的测试中使用的MockUnitOfWork,其中包含已填充的Foo和Barr存储库?我正在使用NSubstitute作为我的模拟框架。工作单元publicinterfaceIUnitOfWork{voidSave();voidCommit();voidRollback();IRepositoryFooRepos