问题标签 [dbset]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
4548 浏览

.net - EF Code First 不创建表

我正在为 .NET 4 使用实体框架 5 (4.4.0)

我有一个用代码创建的模型,就像我和其他几个一样。当我运行我的应用程序时,它会创建数据库,但不会创建任何表。之后,应用程序退出且没有错误消息 - 即使在调试模式下也是如此。我不知道问题是什么。

其他人有这个问题吗?

创建上下文类时顺序重要吗?

或者它可以按任何顺序?

0 投票
1 回答
251 浏览

database - 将数据保存在多个数据库集中

我有一个包含多个数据库集的数据库上下文。我有一个编辑(httpget)和一个编辑(httppost)方法。我想将特定数据保存在特定数据集中。如何指定要使用的数据库集?顺便说一句,Edit 方法的视图使用了几个模型。

我的数据库上下文如下所示:

当我定义

唯一的选择是data.SaveChanges()。我想要这样的东西 data.table1.SaveChanges()并传递我想要保存的数据。

0 投票
0 回答
419 浏览

entity-framework - 如何重新加载我的 DbSet 中的所有实体(条目)(不是一个条目)?

如何重新加载我的DbSet中的所有实体(条目)(不是一个条目)?

我有 2 个表:

和 1 个视图:

我使用 RefreshInfo() 函数在网格的数据源中设置 DbSet.ToList() ,编辑一个 Tb1 实体,然后调用 myDbContext.SaveChanges() ,它在数据库中更改,并且 MyView1 在那里显示正确的值但是当我调用 RefreshInfo () 再次,它不显示来自数据库的值!我可以重新加载当前实体并且它有效,但我想重新加载我的 DbSet 中的所有实体

每次调用 RefreshInfo() 方法时,我都想从 db 获取新数据。(我用 SqlProfiler 检查过,我看到 ef 向数据库发送了 SELECT 命令,但是作为回报发生了什么?!)

我不想每次都创建新的 dbContext,这不是 我在 winform 中使用 datagridview 和实体框架 codefirst 的好解决方案。

0 投票
0 回答
428 浏览

asp.net-mvc - Perfomance issue - .Count in MVC view

For several pages I use a .Count inside a foreach loop

Because of lazy loading the EF makes a round trip to the database for this.

Now I want to fix this by using this or linq version: Include("List.Flight.FlightReservations")

Doing this makes loading my dbSet take even longer than those foreach round trips

How can I 'load' parts of only 1 object?

I would like to use context.Items.Single(p => p.id == id).Include(.....) So I only load 1 item fully.

Or any other solutions for this? (A way to force load item.List.item2.List inside controller)

Any suggestions are welcome :) Thanks

EDIT : now using

Where(..).ToDictionary(item => item, item => item.Flight.FlightReservations.Count); Also noticed adding an index to my 'clustered index' table helped a little. Still slow though

This query executes very fast, making a IEnumerable<Model>. But still it loads very slow once sent to the view.

0 投票
2 回答
2854 浏览

entity-framework - ObjectContext 和 ObjectSet 是否提供优于 DbContext 和 DbSet 的优势?

我目前正在最终确定将使用实体框架作为其 ORM 的新应用程序的架构。DbSet但是,对于我应该使用默认选项(和DbContext)还是使用“棘手”选项(ObjectSet和) ,我有点困惑ObjectContext?后一个类是否比默认类具有优势?

0 投票
1 回答
794 浏览

asp.net-mvc - MVC 4:将单个继承模型传递到主模型到局部视图

我想弄清楚这一点。

我有一门专业课叫做食物。

我有多个继承自 Food 的类:Pizza、Sandwich、Meals 等...

我使用代码优先方法创建了数据库。该数据库有披萨、三明治和餐食的表格。

现在在我的主页上,我需要显示我拥有的每种食物的前 5 名,但我不想创建一个名为 foods 的表。那么我如何获取前 5 种食物的列表(我无法从我的 DBSet 类中访问 foods.ToList(),因为这将导致我为其创建一个数据库表,但我仍然如何将所有这些值转换为多个Class Foods 的对象。然后将它们传递给我的 C# 代码中的视图?

在我获得前 5 名比萨饼、前 5 名三明治、前 5 名膳食的所有这些值后,我将需要将它们传递给渲染模型“食物”并显示这些类之间共有的属性的局部视图(即仅那些在食物中的那些,而不是比萨饼或膳食中单一的特殊特性)等等......

这很重要,因为我试图理解 mvc 如何工作的概念,这与创建一个 2 类模型并创建一个接受这个模型的视图不同,正如我在所有帖子中看到的那样,比萨饼和三明治在线的。

0 投票
1 回答
1273 浏览

dbcontext - 当实体设置为内部访问时,DbContext EntitySet null

我希望数据库设置为内部的,以确保外部包只能访问和编程接口而不是具体类

例如

一旦我通过模型浏览器将对 Person 类和 People 实体的访问设置为公共,它就会再次工作,但我想限制对内部的访问以进行包封装。

它适用于 VS2010 EF 中的 Context,但不适用于 VS2012 中的 DbContext。

任何帮助深表感谢 :}

附言

现在我刚刚编辑了 .tt 文件,如下所示

这会生成如下实例化集合的上下文类,最好不必为模型中的每个实体集将其添加到 .tt 文件中。

0 投票
3 回答
13343 浏览

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

几天来,我一直在努力从存储库 ( DbContext) 中检索我的实体。

我正在尝试将所有实体保存在原子操作中。因此,不同的实体一起代表了对我有价值的东西。如果所有实体都是“有效的”,那么我可以将它们全部保存到数据库中。实体“a”已存储在我的存储库中,需要检索以“验证”实体“b”。

这就是问题出现的地方。我的存储库依赖于DbSet<TEntity>与 Linq2Sql 配合使用的类(Include()例如导航属性)。但是,DbSet<TEntity>不包含处于“添加”状态的实体。

所以我有(据我所知)两种选择:

  • 使用ChangeTracker来查看哪些实体可用,并根据它们将它们查询到一个集合中EntityState
  • 使用该DbSet<TEntity>.Local物业。

ChangeTracker似乎需要一些额外的努力才能让它以某种方式工作,以便我可以使用 Linq2Sql 来Include()导航属性,例如

DbSet<TEntity>.Local对我来说似乎有点奇怪。可能只是名字。我刚读到一些它表现不佳的东西(比 DbSet<> 本身慢)。不确定这是否是虚假陈述。

具有重要 EntityFramework 经验的人可以对此有所了解吗?要遵循的“明智”之路是什么?还是我看到鬼了,我应该一直使用该.Local物业吗?

更新代码示例


出错的一个例子


我想如何使用我的示例Repository

在我的Repository我有这个方法:

我以这种方式在业务代码中使用它:

这主要是我喜欢坚持DbSet喜欢变量的原因。我需要Include导航属性的灵活性。如果我使用ChangeTracker我检索 a 中的实体List,这不允许我在以后的时间点延迟加载相关实体。

如果这接近于难以理解的废话*t,请告诉我,以便我改进问题。我迫切需要一个答案。

提前很多!

0 投票
1 回答
327 浏览

c# - 直接访问是否需要 DBSet?

我很确定我已经知道答案,但我需要其他人确认。问题涉及在实体框架中使用 DbSet:代码优先。(使用 C#)

让我们以这些小类为例:

所以 TopClass 有名为 ExampleA 和 ExampleB 的类的列表,而 ExampleA 有一个 ExampleC 的列表。

从 DbContext 继承的类可能是这样的:

Cuttently,只有 DbSet 是 TopClass 的一个。Topclasses的对象可以保存到数据库中,ExampleA、ExampleB和ExampleC的对象被放入TopClass-objects/ExampleA-object的列表中,也将被保存到数据库中。如果我从数据库中加载 TopClass 对象,列表中的所有其他对象也将被加载。换句话说,我可以通过 TopClass 的对象访问已保存到数据库中的其他对象。

现在有一个问题,我一直在与我的一位同事讨论:
如果我想直接访问 ExampleA 的对象,而无需加载 TopClass 对象和所有其他相关对象(也无需使用 SQL 编码或 lambda-表达式),我是否需要 ExampleA 的 DbSet?或者是否可以减少 DbSet 的负载以仅包含我想要的对象?如果是,是否甚至可以在不加载 TopClass 的情况下加载 ExampleA 的对象?

我认为有些答案是显而易见的。我自己相信必须有一个 DbSet 来直接访问数据库中该类的对象,而不必加载 TopClass 对象。但是,我需要知道,而不是相信,所以我要求您确认或否定(?)我的信念。至于到目前为止我在 Internet 上和一些文献中读到的内容,在几个课程中使用 DbSet 向我强调了有效的编码,但不是什么是可能的和不可能的。

0 投票
1 回答
748 浏览

wpf - WPF 应用程序中短暂的 DbContext 合理吗?

在他关于 DbContext 的书中,@RowanMiller 展示了如何使用 DbSet.Local 属性来避免 1.) 不必要的数据库往返和 2.) 在应用程序中传递集合(使用例如 ToList() 创建)(第 24 页)。然后我尝试遵循这种方法。但是,我注意到从一个使用 [} – 块到另一个, DbSet.Local 属性变为空:

那么,第 24 页的重点是什么?如果 DbSet.Local 只能在 using- 块内使用,我如何避免传递我的集合?此外,如果我使用这些短暂的上下文实例而不在后台将任何缓存数据移交给彼此,我如何从更改跟踪中受益?那么,如果上下文应该是短暂的以释放连接等资源,我是否应该为此放弃缓存?即我不能同时使用两者(短期连接但长期缓存)?所以我唯一的选择是将查询返回的结果存储在我自己的变量中,这正是第 24 页的动机中不鼓励的?

我正在开发一个 WPF 应用程序,它可能在未来也会变得多层,涉及 WCF。我知道 Julia 在她的书中有一个这样的例子,但我目前无法访问它。我在网上找到了其他几个,例如http://msdn.microsoft.com/en-us/magazine/cc700340.aspx(旧的 ObjectContext,但很好地解释了层间协作)。在那里,使用了一个长寿命的上下文(虽然提到了缺点,但没有提供这些缺点的解决方案)。不仅单个 Destinations.Local 会丢失,因为您肯定知道查询获取的所有其他实体也是如此。

[编辑]:在阅读了 Julia Lerman 的书之后,似乎可以归结为 EF 默认没有二级缓存;但是,通过一些(我认为是相当大的)努力,可以添加第 3 方缓存解决方案,正如本书和 MSDN、codeproject 等的各种文章中所描述的那样。

如果在 DbContext 书中关于 DbSet.Local 的部分中提到了这个问题,我将不胜感激,因为它实际上是一级缓存,在 using {} 块结束时被销毁(只是我的建议,使其对读者)。在第一次阅读之后,我的印象是 DbSet.Local 总是会在第二个 using {} 块中返回相同的引用(单例样式),尽管有新的 DbContext 实例。

但我仍然不确定二级缓存是否适合我的 WPF 应用程序(正如 Julia 在她的分布式应用程序文章中提到的二级缓存)?或者是通过 using {} 块中的一个或一些查询将我的域模型的聚合根实例(DDD,Eric Evans)放入内存的方法,处理 DbContext 并只保存对聚合实例的引用,这个避免长期存在的上下文?如果您能帮助我做出这个决定,那就太好了。

http://msdn.microsoft.com/en-us/magazine/hh394143.aspx http://www.codeproject.com/Articles/435142/Entity-Framework-Second-Level-Caching-with-DbConte http:// blog.3d-logic.com/2012/03/31/using-tracing-and-caching-provider-wrappers-with-codefirst/