有没有办法简化数据插入到MySQL表中,利用对象,结构或数组,而不是用列出的十几个字段编写长SQL查询?
说,我有一个简单的类(或结构)对象,如下所示:
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);
...
答案 0 :(得分:3)
您正在寻找OR / M.由于您正在寻找支持Mono的解决方案,请检查 NHibernate ,这是Microsoft .NET Framework开源领域中最好的OR / M之一:
如果您想了解更多关于什么是OR / M的信息:
答案 1 :(得分:2)
我终于想出了PetaPoco library。 “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方向的人!
答案 2 :(得分:1)
如果你不采用OR / M方式,你可以使用反射作为T,但如果T包含与你的表记录无关的属性,你还必须使用自定义属性。