Tag: entity framework

entity framework中的“数据库优先”和“现有数据库的代码优先”之间有什么区别

我刚看了MSDNvideo,关于EF6.1中新的“Code First to Existing Database”function http://channel9.msdn.com/Blogs/EF/Code-First-to-Existing-Database-EF6-1-Onwards- 然而,作为EF的新手,这似乎是从DB生成POCO Model类,这正是我认为的“数据库优先”所做的(我理解’DB First’与’Code First’相反) 有什么不同? 他们都是’数据库第一’!

entity framework核心/ SQLite:加入“扁平化”结果后的GroupJoin

使用Entity Framework Core 2.1和SQLite数据库,如果我在另一个Join之后使用它,我会从LINQ GroupJoin获得不同的行为。 目前尚不清楚这是一个错误还是我忽略了什么。 我创建了一个最小的VS2017项目来重现这个,可以在这里找到: https://gitlab.com/haddoncd/EntityFrameworkGroupJoinIssue 在这个例子中,我为Blog表中的每一行获取一个对象,每个对象包含多个PostTitles: db.Blogs .GroupJoin( db.Posts, s => s.BlogId, p => p.BlogId, (s, ps) => new { s.BlogId, s.BlogTitle, PostTitles = ps.Select(p => p.PostTitle), } ) .OrderBy(x => x.BlogId)) 但是在这个例子中,结果是“扁平的” – 我为每个Blog-Post对获得一个对象,就像你从传统的SQL外连接一样: db.Subscriptions .Join( db.Blogs, s => s.BlogId, b => b.BlogId, (s, b) => new { s.SubscriptionId, b.BlogId, b.BlogTitle, […]

批处理中nhibernate和entity framework有什么区别?

我想选择上面的一个orm。 批处理中nhibernate和entity framework有什么区别?

如何使用WCF Ria Services跟踪实体更改?

我需要将对客户端上发生的实体所做的更改记录到数据库表中。 但是,当我进行更改并检查ChangeTracker属性时,它声称没有发生任何更改。 [服务] private static readonly ISomeDao someDao = DataAccess.SomeDao; [Query] public List GetSomeEntites(int someId) { var entities = someDao.GetSomeEntites(someId); entities.ForEach(e => e.StartTracking()); return entities; } [Update] public void UpdateSomeEntity(SomeEntity entity) { // inspect entity.ChangeTracker.OriginalValues…. nothing entity.StopTracking(); // inspect entity.ChangeTracker.OriginalValues…. nothing … // Update log table } [客户] public EntitySet SomeEntities { get { return […]

禁用EF6中的所有约定

今天我已经有了,甚至可能在EF6内置约定方面遇到更多问题。 通过调试,我看到代码首先EF6启用所有可用的默认约定。 由于我使用映射器类生成了一个好看的模型映射,我只是不希望约定改变我的数据模型。 具体来说,我无法运行简单的SELECT查询,因为当FK列被正确映射为linkedentity并且我没有理由在我的数据库中使用不同的名称时,进入SQL的虚假列Extent1.LinkedEntity_id 。 为清晰起见:这个代码优先模型是从DB-first反向设计的。 数据库规则和我无法改变其设计。 问题:如何一次禁用所有约定? 似乎我在DbModelBuilder.Conventions找不到.Clear方法

entity framework:objectstatemanager中已存在具有相同密钥的对象

我看到这个问题已经被问了很多,但是我还没有发现任何可以解决我遇到的问题的东西。 显然我正在使用entity framework来执行记录更新。 但是,一旦更新完成,每当我尝试保存时,都会收到以下错误消息: An object with the same key already exists in the objectstatemanager 起初,我从包含ZipCodeTerritory模型对象zipToUpdate副本的视图中传入一个集合对象。 我通过拉出这个对象来改变代码,而只是发送相关的字段。 但是,我仍然遇到同样的错误。 还有什么奇怪的是我第一次运行这段代码,它运行正常。 在我得到错误之后的任何尝试。 调节器 以下是调用编辑函数的方法的代码 public static string DescriptionOnly(ZipCodeIndex updateZip) { if (!string.IsNullOrWhiteSpace(updateZip.newEffectiveDate) || !string.IsNullOrWhiteSpace(updateZip.newEndDate)) { return “Neither effective or end date can be present if updating Territory Code only; “; } _updated = 0; foreach (var zipCode […]

如何递归地包括所有可导航属性以模拟延迟加载

为了模拟延迟加载,我希望有一个方法递归地通过Eager Loading包含完整的对象图,这样在加载实体时,它的所有相关数据也会被加载。 从MSDN文档: 要包含单个引用:query.Include(e => e.Level1Reference)。 要包含单个集合:query.Include(e => e.Level1Collection)。 要包含引用,然后引用一个级别:query.Include(e => e.Level1Reference.Level2Reference)。 要包含一个引用,然后是一个级别的集合:query.Include(e => e.Level1Reference.Level2Collection)。 要包含一个集合,然后向下一级引用:query.Include(e => e.Level1Collection.Select(l1 => l1.Level2Reference))。 要包含一个集合,然后是一个级别的集合:query.Include(e => e.Level1Collection.Select(l1 => l1.Level2Collection))。 要包含一个集合,然后向下一级引用:query.Include(e => e.Level1Collection.Select(l1 => l1.Level2Reference))。 要包含一个集合,然后是一个级别的集合:query.Include(e => e.Level1Collection.Select(l1 => l1.Level2Collection))。 要包含一个集合,一个引用和一个引用两个级别:query.Include(e => e.Level1Collection.Select(l1 => l1.Level2Reference.Level3Reference))。 要包括集合,集合和引用两个级别:query.Include(e => e.Level1Collection.Select(l1 => l1.Level2Collection.Select(l2 => l2.Level3Reference)))。 题: 我如何递归地包含所有可导航属性并将其构建到通用存储库方法中,这样我可以在需要时获得实体的深层对象图,无论是否添加了新属性?

添加对项目未直接使用的程序集的引用是否正确?

我有一个由3个项目组成的解决方案。 一个包含我的edmx图的Entity框架 一个是我的核心业务 和一个我的网络应用程序 当我在服务器或托管服务上发布我的代码时,我收到此运行时错误: {“无法加载文件或程序集’EntityFramework,Version = 4.4.0.0,Culture = neutral,PublicKeyToken = b77a5c561934e089’或其中一个依赖项。系统找不到指定的文件。”:“EntityFramework,Version = 4.4.0.0, Culture = neutral,PublicKeyToken = b77a5c561934e089“} 我收到此错误,因为我的entity framework程序集未发布。 我的服务器上缺少entity frameworkdll文件。 我知道为什么。 我没有在我的Web应用程序项目中引用它,因为此项目中不需要此程序集。 在我的另外两个项目中引用了该程序集。 我可以通过在我的Web应用程序中添加entity framework引用来轻松解决我的问题。 我能这样做吗? 是的,但添加对项目不直接使用的程序集的引用是否很好? 我能做什么? 更多信息 一个用于entity framework :参考entity framework 一个用于我的核心业务 :参考entity framework,因为我在这里操纵我的实体 还有一个用于我的网络应用程序 :网站,它就像UI和核心业务之间的外观。 我这里没有引用或使用entity framework。 我没有任何编译错误>我只有一个运行时错误,因为我的entity framework没有发布。 在这种情况下的Windows应用程序中,我没有在项目中引用我的dll,但我使用post build动作复制它。 我不知道在我需要发布或部署的Web应用程序中该怎么做。

主键冲突:使用EF Code Firstinheritance

我有以下EF代码的第一个代码。 我收到以下exception: ‘GiftCouponPayment’不包含标识列。 表已在数据库中成功创建。 但是,我怎样才能摆脱这种exception呢? 另外,这个例外的原因是什么? 注意:我可以使用任何表模式,因为域模型(首先使用代码描述)被保留(并且可以查询数据)。 继续此exception后,还有另一个例外,如下所示: 保存不公开其关系的外键属性的实体时发生错误。 EntityEntries属性将返回null,因为无法将单个实体标识为exception的来源。 通过在实体类型中公开外键属性,可以更轻松地在保存时处理exception。 有关详细信息,请参阅InnerException。 {“违反PRIMARY KEY约束’PK_dbo.PaymentComponent’。无法在对象’dbo.PaymentComponent’中插入重复键。\ r \ n语句已终止。”} 参考 : entity framework:将表拆分为多个表 注意 :生成的数据库模式如下所示。 码: public class MyInitializer : CreateDatabaseIfNotExists { //Only one identity column can be created per table. protected override void Seed(NerdDinners context) { //context.Database.ExecuteSqlCommand(“CREATE UNIQUE INDEX IX_Payment_PayedTime ON Payment (PayedTime)”); context.Database.ExecuteSqlCommand(“DBCC CHECKIDENT (‘Payment’, […]

Dal(带Entity Framework)和Model层进入MVC

首先,我使用EF到Dal层(来自MVC的separeted项目,相同的解决方案)。 EF的EDMX文件生成的模型是Model层的实际模型? 如果是这样,我如何访问这些模型以在MVC的View层中工作? 我认为直接从视图访问数据层以使用这些模型是错误的,如果我使用“我的模型”创建一个模型层并将Dal的模型转换为我的模型……它将是重复的代码。 可能我错了,但大多数都是错的。 用代码第一种方法,我无法弄清楚这一点。