草庐IT

c# - 是否可以创建用于将项目添加到 Entity Framework dbset 的通用方法?

我之前没有使用过EntityFramework或泛型,在减少我的代码时遇到了一些困难。我正在解析一个文本文件以加载10个查找表,其中包含可能每晚都可能更改的数据。文本文件有一个“类型”标题,后跟键/值集列表。我已经完美地工作了,但我想重构代码以清理它,并想使用通用方法来完成它,这样我就可以减少重复的代码。我已经将解析归结为通用方法,但我无法弄清楚如何以通用方式将实体添加到上下文中。我必须遍历每种类型的实体列表并将它们添加到上下文中:voidMain(){switch(line.ToUpper()){case"AREA":{ListareaList=this.GetItems(file)

c# - 如何将 DbSet<T> 转换为 List<T>

鉴于以下简化的EntityFramework6上下文,我试图用实体填充一个列表,但在如何通过反射进行转换(我相信)方面遇到了问题。publicclassFooContext:DbContext{publicvirtualIDbSetFoo{get;set;}//...}publicclassFooClass{publicintId{get;set;}publicstringName{get;set;}//...}publicmain(){using(varcontext=newFooContext()){varsets=typeof(FooContext).GetProperties(

c# DbSet - 无法获取内部对象

我需要将一个实体切换为内部实体。所以我创造了它。没有构建/运行时错误。但是当我想使用DbSet对象时我不能,因为该对象似乎没有初始化!我的上下文实体:publicpartialclassEntities{internalDbSetEmployeeSet{get;set;}}我是这样使用的:Entitiescontext=newEntities();Listemployees=context.EmployeeSet.ToList();但是“EmployeeSet”为空。我认为是因为它没有在get中实例化。如果我像这样使用public,它会起作用:publicpartialclassEnt

c# - DbContext -> DbSet -> Where 子句丢失( Entity Framework 6)

我已经阅读了一些EntityFramework6的教程...基础很简单。using(varcontext=newMyContext()){Useru=context.Users.Find(1);}但是如何在用户的“DbSet”上使用“Where”或其他东西呢?publicclassMyContext:DbContext{publicMyContext():base("name=MyContext"){//this.Database.Log=Console.Write;}publicvirtualDbSetUsers{get;set;}}用户[Table("User")]publiccl

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 4.1 DbSet 重新加载

我正在使用DbContext的单个实例在WPF应用程序中本地隐藏数据库的整个副本的场景。我听说这是不好的做法,但我的数据库很小,我需要在应用程序运行时在本地保存它的完整副本。IQueryable的扩展方法,Load()让我预加载DbSet的元素,这样我就可以将东西绑定(bind)到DbSet的Local属性.数据库中的数据变化很快,所以我想SaveChanges()并重新加载一切,甚至是已经被跟踪的对象。调用Load()方法再次不会更新已跟踪但未标记为已更改但已加载的项目。在DbSet中重新加载预加载项目的首选方法是什么??在我的脑海中,我只能想到打电话SaveChanges(),然后

c# - 从类型中获取 DbSet

我正在尝试为MVC6应用程序制作通用表查看器/编辑器。我目前正在使用Context.GetEntityTypes();向我返回表格列表。现在我需要获取特定类型的数据。我当前的实现是://OnmycontextpublicIQueryableGetDbSetByType(stringfullname){TypetargetType=Type.GetType(fullname);varmodel=GetType().GetRuntimeProperties().Where(o=>o.PropertyType.IsGenericType&&o.PropertyType.GetGenericT

c# - 从 DbContext 检索 DbSet<T> 的通用方法

我在大型数据库(由200多个表组成)中使用EntityFramework。尝试创建一个返回DbSet的通用方法特定表的T(即类,可以是TableA)。使用实体数据模型(自动)创建的实体类如下所示:publicpartialclasssqlEntities:DbContext{publicvirtualDbSetTableA{get;set;}publicvirtualDbSetTableB{get;set;}publicvirtualDbSetTableC{get;set;}...//othermethods}我的主类是这样的publicclassTableModifier{//Sho

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

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

c# - 如何在 Entity Framework Core 中使用复数 DbSet 属性名称搭建 DbContext?

我在PackageManagerConsole中使用Scaffold-DbContext命令为现有的SQLServer数据库创建和重新创建上下文和实体:Scaffold-DbContext-providerEntityFramework.MicrosoftSqlServer-connection"myconnectionstring"除一件事外,它工作完美:DbSet的属性名称为单数形式:publicpartialclassMyDbContext:DbContext{publicvirtualDbSetRequest{get;set;}publicvirtualDbSetRequest