Entity framework 4 实体框架POCO外键分配挂起

Entity framework 4 实体框架POCO外键分配挂起,entity-framework-4,poco,Entity Framework 4,Poco,为了简单起见,我有一个带有Order表和PaymentMethod表的数据库。这是一种一对多的关系。订单表有许多描述订单的字段,PaymentMethod只有一个Id和一个名称。我已经在EF中映射了一个关联,在Order表中有一个外键,名为“PaymentMethodId”。我有一个名为PaymentMethodType的枚举,这不是问题所在。我已经测试了下面相同的代码,没有涉及枚举。我有很多其他表都有相同的场景,并且在另一个关系中遇到了这个问题,但是现在只有这个问题 在下面的代码中,我创建了一

为了简单起见,我有一个带有Order表和PaymentMethod表的数据库。这是一种一对多的关系。订单表有许多描述订单的字段,PaymentMethod只有一个Id和一个名称。我已经在EF中映射了一个关联,在Order表中有一个外键,名为“PaymentMethodId”。我有一个名为PaymentMethodType的枚举,这不是问题所在。我已经测试了下面相同的代码,没有涉及枚举。我有很多其他表都有相同的场景,并且在另一个关系中遇到了这个问题,但是现在只有这个问题

在下面的代码中,我创建了一个新订单,一切正常。如果我随后在程序中获得相同的顺序,并尝试将PaymentMethodId设置为不同的值,程序将挂起约25秒。我试图通过POCO对象跟踪代码,它似乎在一次又一次地循环/设置PaymentMethod和PaymentMethodId。非常感谢您的任何建议!!!请随时就我可能遗漏的任何细节提问。我正在使用实体框架4.0和POCO以及SQL Server 2008 R2

        int orderid;
        using (PinotsPaletteEntities context = new PinotsPaletteEntities())
        {
            Order order = new Order();
            //assign other order information
            order.PaymentMethodId = (int)PaymentMethodType.CreditCard;               
            context.Orders.AddObject(order);
            context.SaveChanges();
            orderid = order.Id;
        }

        using (var context = new PinotsPaletteEntities())
        {
            Order order2 = context.Orders
                .Where(x => x.Id == orderid)
                .FirstOrDefault();
            order2.PaymentMethodId = (int)PaymentMethodType.Cash; //hangs here for 25secs
            context.SaveChanges();
        }

我还遇到了使用实体框架v4.1和“ADO.NET C#POCO实体生成器”(最近更名为)设置属性的问题。我的项目是用C#编写的,使用ASP.NETMVC3

我的症状是,在一个相对较小的数据集(几十个)上更改属性可以正常工作。在从遗留系统导入记录(大约70000条记录,其中有几十万条相关记录)之后,设置属性基本上会挂起应用程序。和您一样,我遇到问题的属性是“type”表的外键

奇怪的是,设置一些几乎相同的属性就可以了。设置属性一次就可以了。但是在类型之间切换会挂起应用程序


我通过迁移到较新的服务器解决了这个问题,至少目前是这样。通过Nuget升级,这也引入了最新版本的Entity Framework,这可能也有助于解决问题。迁移到DbContext需要最少的代码更改。生成的POCO类现在非常干净,没有先前T4模板将创建的“修复”代码页。

您使用的是POCO T4模板吗?您能否验证延迟不是由某些意外的延迟加载引起的?如果删除
PaymentMethodId
属性并设置
PaymentMethod
对象,会发生什么情况?如果将PaymentMethod对象设置为null或良好对象,则会得到相同的结果。PaymentMethodId也是一样,你解决问题了吗?我遇到了一个几乎相同的问题。我正在使用“EF 4.x POCO Entity Generator for C#”扩展。当我在试图设置外键的表中有大量记录(您模型中的订单)时,我看到了挂起。我有大约70000张唱片。由于没有记录或记录很少,因此没有明显的延迟。