[英]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.