繁体   English   中英

如何在 C# 中实现 ORM

[英]How to implement an ORM in C#

我正在尝试在 C# for MySQL 中实现我自己的 ORM,因为我发现它不能完全按照我的意愿去做。

我目前只实现了几种方法(例如保存方法):

public void Save()
    {
        string queryVariables = "";
        foreach (PropertyInfo propertyInfo in this.GetType().GetProperties().Where(x => x.Name != "BdClass" && x.GetValue(this) != null))
        {
            string isLast = this.GetType().GetProperties().Last() == propertyInfo ? "" : ", ";
            queryVariables += $"{propertyInfo.Name} = '{MySqlHelper.EscapeString(propertyInfo.GetValue(this).ToString())}'{isLast}";
        }
        ConnectionSingleton.Query($"INSERT INTO {this.GetType().GetProperties().Single(x => x.Name == "BdClass").GetValue(this)} SET {queryVariables} ON DUPLICATE KEY UPDATE {queryVariables};");
    }

我正在尝试实现 FindAll() 方法,我希望它返回一个 List ,其中包含调用该函数的对象的类型。 假设我有一个名为 Person 的类,我想从数据库中获取 Person 表的所有行,我想这样写:

List<Person> persons = Person.FindAll();

我正在努力在 FindAll() 方法中创建对象。

看看Insight Db 我们使用它来处理 Sql Server、Oracle 和 DB2。 它也支持 MySQL。 我发现它真的很容易使用并且节省了很多时间。

我更喜欢使用NEntityDb 它支持 MySQL 和其他数据库,例如 SQL Server、Oracle、PostgreSQL、IBM Db2 MariaDB、Sqlite 或 Firebird。

使用NEntityDb for MySQL ,您可以使用 .NET LINQ 表达式和 Fluent API 查询数据并将其保存到数据库。

暂无
暂无

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

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