繁体   English   中英

具有某种子方法的C#创建方法

[英]C# creating methods with some kind of submethods

我想建立自己的mysql类。 但是我对c#还是比较陌生。

因此,根据我的想法,我想构建一些类似的东西:

mySqlTool.select("a,b,c").from("foo").where("x=y");

我不知道如何称呼它,实际上我什至不知道这是否有可能。 我的Google搜索没有任何实际结果。

所以我的问题是:

可以像我上面的示例一样做一些事情吗?

创建流利的api并不过分。 您只需从每个方法返回该类的当前实例,就可以按照您在帖子中指定的方式将它们链接起来:

public class MySqlTool
{
    private string _fields, _table, _filters;

    public MySqlTool Select(string fields)
    {
        _fields = fields;
        return this;
    }

    public MySqlTool From(string table)
    {
        _table = table;
        return this;
    }

    public MySqlTool Where(string filters)
    {
        _filters = filters;
        return this;
    }

    public Results Execute()
    {
        // build your query from _fields, _table, _filters
        return results;
    }
}

将允许您运行如下查询:

var tool = new MySqlTool();
var results = tool.Select("a, b, c").From("someTable").Where("a > 1").Execute();

看来您正在尝试执行与Linq to SQL类似的操作,但要使用MySQL。 有一个名为LinqConnect项目可以执行此操作。 我与他们没有联系。

您可以这样使用它(来自LinqConnect 教程 ):

CrmDemoDataContext context = new CrmDemoDataContext();
var query = from it in context.Companies
    orderby it.CompanyID
    select it;

foreach (Company comp in query)
    Console.WriteLine("{0} | {1} | {2}", comp.CompanyID, comp.CompanyName, comp.Country);

Console.ReadLine();

我个人并不喜欢它,但是如果您只是在学习,它可能会很有用。 Linq2SQL可以立即为您提供该功能。

如果您希望自己完成此任务。 您将需要使用扩展方法 c#中的一项功能,使您可以使用在基础上运行的静态方法扩展类。

我的建议是,如果您要执行自己的数据访问层,则应使用dapper之类的东西(由StackOverflow的工作人员构建/使用)。 这为您提供了到数据库基本连接的简单包装。 它提供简单的ORM功能并为您进行参数化。

我也强烈建议您将密集查询封装在存储过程中。

您想要做的是设计一个流畅的界面 ,对于刚学习C#的人来说,这是一个高级概念。 我建议您坚持基础,直到您有更多的经验。

更重要的是,.NET FCL中已经内置了数据适配器,并且像这样的第三方适配器更合适,并且已经可以使用“ LINQ to(数据库)”来完成您要执行的操作。 如果我是你,我不会重蹈覆辙。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM