有没有一种方法可以从C#应用程序连接到Magento数据库?

4

我想用C#构建一个访问(读/写)Magento数据库的应用程序。我想知道是否有任何方法可以从自定义应用程序连接?如果有,哪种方式最好?由于我是Magento新手,请给我建议。谢谢。


你是一个C#开发者吗? - Enigmativity
那么,如果你想要访问你的Magento数据库,就不能错过使用LINQPad。我用它来完成很多数据库维护任务。如果你愿意,我很乐意和你讨论。如果你想聊天,可以将我的用户ID添加到Skype中。 - Enigmativity
@Enigmativity 好的,我可以知道你的用户ID吗?感谢你的提供。 - user4865853
我的Skype ID是我的SO ID。 - Enigmativity
2个回答

1
我每天使用LINQPad(C#,VB.NET,F#)通过SSH隧道连接到我的Magento数据库。
有一个MySQL连接提供程序,可以让您有效地使用LINQ to SQL与Magento数据库。
然后,我可以直接从LINQPad运行查询,例如:
var items =
    from o in sales_flat_order
    where o.created_at > DateTime.Now.AddDays(-100)
    join i in sales_flat_order_item on o.entity_id equals i.order_id
    where i.sku.Contains(sku)
    join p in sales_flat_order_payment on o.entity_id equals p.parent_id
    orderby o.created_at descending
    select new
    {
        timestamp = o.created_at,
        order = o.increment_id,
        i.sku,
        i.name,
        qty = i.qty_ordered,
        o.status,
        p.method,
        i.row_total_incl_tax,
    };

该工具能让您查看发送到数据库的实际查询语句。
SELECT t0.created_at, t0.increment_id, t1.sku, t1.name, t1.qty_ordered, t0.status, t2.method, t3.qty, t1.row_total_incl_tax
FROM sales_flat_order AS t0
INNER JOIN sales_flat_order_item AS t1
  ON (t0.entity_id = t1.order_id)
INNER JOIN sales_flat_order_payment AS t2
  ON (t0.entity_id = t2.parent_id)
INNER JOIN (
  SELECT t4.sku, t5.qty
  FROM catalog_product_entity AS t4
  INNER JOIN cataloginventory_stock_item AS t5
    ON (t4.entity_id = t5.product_id)
  WHERE (t4.sku LIKE CONCAT('%',@p0,'%'))
  ) AS t3
  ON (t1.sku = t3.sku)
WHERE ((t0.created_at > @p1) AND (t1.sku LIKE CONCAT('%',@p0,'%')))
ORDER BY t0.created_at DESC
-- p0 = [LEFCACP01]
-- p1 = [2015-08-07 16:13:31]

我还能使用标准的.NET控件来执行图表等操作。

chart

我将其用于各种数据库报告和维护活动。

LINQPad


0

您可以使用Magento API来实现此功能,以下代码可能会对您有所帮助:

using Magento_Import.MagentoAPI;

namespace Magento_Import
{
    public partial class _Default : System.Web.UI.Page
    {
        Mage_Api_Model_Server_V2_HandlerPortTypeClient handler = new Mage_Api_Model_Server_V2_HandlerPortTypeClient();

        protected void Page_Load(object sender, EventArgs e)
        {
            string session = handler.login("username", "password");

            catalogProductEntity[] products;
            handler.catalogProductList(out products, session, null, null);
        }
    }
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接