实体框架POCO外键分配挂起

时间:2012-03-09 20:23:49

标签: entity-framework-4 poco

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

在下面的代码中,我创建了一个新订单,一切正常。如果我稍后在我的程序中获得相同的顺序并尝试将PaymentMethodId设置为不同的值,程序将挂起约25秒。我试图通过POCO对象跟踪代码,它似乎一遍又一遍地循环/设置PaymentMethod和PaymentMethodId。任何建议或建议非常感谢!!!如果我遗漏了任何细节,请随时提出问题。我正在使用带有POCO的实体框架4.0以及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();
        }

1 个答案:

答案 0 :(得分:0)

我还遇到了使用Entity Framework v4.1和“ADO.NET C#POCO实体生成器”(最近重命名为EF 4.x POCO Entity Generator for C#)设置属性的问题。我的项目是使用ASP.NET MVC 3用C#编写的。

我的症状是,使用相对较小的数据集(数十个),更改属性可以正常工作。从遗留系统导入记录(大约70,000与几十万相关记录)后,设置属性将基本上挂起应用程序。和你一样,我遇到问题的属性是“类型”表的外键。

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

我通过迁移到较新的EF 4.x DbContext Generator for C#来解决这个问题,至少目前是这样。通过Nuget升级,这也引入了最新版本的Entity Framework,它可能也有解决问题的方法。迁移到DbContext需要最少的代码更改。生成的POCO类现在非常干净,没有上一个T4模板创建的“fixup”代码页。

相关问题