Интересно почитать… Блог в котором есть много интересной информации…

9 января 2011

EF + MySQL = There is already an open DataReader associated with this Command…

Категория: программирование — admin @ 2:40

1. Инсталлируем Connector/Net.

2. В Visual Studio 2010 создаем  ADO.NET Entity Data Model и импортируем пару таблиц из базы (например Joomla VirtueMart):

пишем код:

using (VirtueMartContext db = new VirtueMartContext())
{
    jos_vm_product product = productListControl.SelectedProduct;

    if (product != null)
    {
        db.Attach(product);

        jos_vm_product_type_1 t1 = product.ProductType1;

        //тут всё нормально
    }
    else
    {
        jos_vm_category category = productListControl.SelectedCategory;

        if (category != null)
        {
            var products = from p in db.jos_vm_products
                            join r in db.jos_vm_product_category_xrefs on p.product_id equals r.product_id
                            where r.category_id == category.category_id && p.product_publish == "Y"
                            select p;

            foreach (jos_vm_product p in products)
            {
                jos_vm_product_type_1 t1 = product.ProductType1;

                //привет, приехали...
                //There is already an open DataReader associated with this Command...
            }
        }
        else
        {
            MessageBox.Show("Select product or category.");
        }
    }

    db.SaveChanges();
}

Иными словами, если мы пишем под .NET, то надо использовать MS SQL Server, иначе definitely problems.

если сделать так, то все работает:

if (category != null)
{
    jos_vm_product[] products;

    {
        products = (from p in db.jos_vm_products
                    join r in db.jos_vm_product_category_xrefs on p.product_id equals r.product_id
                    where r.category_id == category.category_id && p.product_publish == "Y"
                    select p).ToArray();
    }

    foreach (jos_vm_product p in products)
    {
        jos_vm_product_type_1 t1 = product.ProductType1;

        //теперь всё ок
    }
}
Линии 3D/Шарики 3D

Комментариев нет »

No comments yet.

RSS feed for comments on this post. TrackBack URL

Leave a comment

SlogPost.ru