C# 在C中向MySQL表中插入对象、结构或数组#
有没有办法简化MySQL表中的数据插入,使用对象、结构或数组,而不是编写包含十几个字段的长SQL查询 比如说,我有一个简单的类(或结构)对象,如下所示:C# 在C中向MySQL表中插入对象、结构或数组#,c#,mysql,database,mono,C#,Mysql,Database,Mono,有没有办法简化MySQL表中的数据插入,使用对象、结构或数组,而不是编写包含十几个字段的长SQL查询 比如说,我有一个简单的类(或结构)对象,如下所示: public class UserRecord { public int id; public string first_name; public string last_name; public int age; // constructor, destructor, etc. ... }
public class UserRecord
{
public int id;
public string first_name;
public string last_name;
public int age;
// constructor, destructor, etc.
...
}
是否可以使用标准C#库来实现以下功能:
...
UserRecord user1 = new UserRecord("Hunter", "Thompson", 67);
database.Insert(user1);
...
而不是像:
...
cmd.CommandText = "INSERT INTO Users (... ...);
cmd.CommandType = CommandType.Text;
cmd.Parameters.AddWithValue("@first_name", user1.first_name);
cmd.Parameters.AddWithValue("@last_name", user1.last_name);
cmd.Parameters.AddWithValue("@age", user1.age);
...
您正在寻找OR/M。既然您正在寻找支持Mono的解决方案,请选中NHibernate,它是Microsoft.NET Framework开源领域中最好的OR/M之一:
[PetaPoco.TableName("le_users")]
[PetaPoco.PrimaryKey("id")]
public class UserRecord
{
public int id { get; set; }
public string first_name { get; set; }
public string last_name { get; set; }
public int age { get; set; }
}
...
// Create a PetaPoco database object
PetaPoco.Database db = new PetaPoco.Database(dbconnection);
// Insert a record
UserRecord rec = new UserRecord();
rec.first_name = "Hunter";
rec.last_name = "Thompson";
db.Insert(rec);
感谢所有为我指明方向的人 我终于想出了答案。“micro ORM”库非常轻量级,易于使用。我发现NHibernate对于像我这样的小应用程序来说非常臃肿 下面是我用来管理UserRecords的代码示例:
[PetaPoco.TableName("le_users")]
[PetaPoco.PrimaryKey("id")]
public class UserRecord
{
public int id { get; set; }
public string first_name { get; set; }
public string last_name { get; set; }
public int age { get; set; }
}
...
// Create a PetaPoco database object
PetaPoco.Database db = new PetaPoco.Database(dbconnection);
// Insert a record
UserRecord rec = new UserRecord();
rec.first_name = "Hunter";
rec.last_name = "Thompson";
db.Insert(rec);
感谢所有为我指明方向的人 你试过任何可用的ORM工具吗?@Marc,没有。我想要一种“非自动”的“解决方案。我想知道是否可以从一些数据库相关的类中派生出来。@ezpresso请检查我的答案。不可能。没有神奇的类可以将关系数据库访问转换为面向对象的访问。嗯,没有这样的类:有OR/M概念。这是一条路,不要试图重新发明轮子。你试过了吗有没有可用的ORM工具?@Marc,没有。我想要一种“非自动”的“解决方案。我想知道是否可以从一些数据库相关的类中派生出来。@ezpresso请检查我的答案。不可能。没有神奇的类可以将关系数据库访问转换为面向对象的访问。嗯,没有这样的类:有OR/M概念。这是一条路,不要试图重新发明轮子。这样你就可以你是对的。但是ORM只是一种选择,而不是一种义务。至于轮子的重新发明,我相信你已经看到了很多方轮子。是的,绝对的,这是痛苦的,你知道;)这就是为什么我更倾向于认为没有人应该创建自己的OR/M,因为现有的已经成熟足够了,他们已经证明了质量、功能集和支持。这样你就可以重新发明轮子,创建一个新的弱或/M。你是对的。但ORM只是一个选项,而不是一个义务。至于轮子的重新发明,一般来说,我相信你已经看到了很多方轮子。是的,当然,这是痛苦的,你知道;)这就是为什么我更喜欢争论的是,没有人应该创建自己的OR/M,因为现有的OR/M已经足够成熟,并且已经证明了质量、功能集和支持。