我正在使用Simple.Data,我对此有疑问。
我有以下课程:
public abstract class User
{
public int Id { get; set; }
public string Username { get; set; }
public string Password { get; set; }
public string Salt { get; set; }
}
public class Customer : User
{
public string Email { get; set; }
}
public class Admin : User
{
public string Name { get; set; }
public bool IsActive{ get; set; }
}
一个在数据库中执行操作的类:
public class Manager
{
public string ConString { get; set; }
public Manager()
{
ConString = ConfigurationManager.ConnectionStrings["Test"].ConnectionString;
}
public void CustomerUpdate()
{
var obj = new Customer()
{
Id = 1,
Username = "teste",
Password = "teste",
Salt = "",
Email = "teste@teste.com"
};
var db = Database.OpenConnection(conString);
db.tbCustomer.Update(obj);
}
public void AdminUpdate()
{
var obj = new Admin()
{
Id = 1,
Username = "teste",
Password = "teste",
Salt = "",
Name = "teste",
IsActive = true
};
var db = Database.OpenConnection(conString);
db.tbAdmin.Update(obj);
}
}
但是,我有一个问题:
在我的数据库中,在表tbCustomer中,主键是“CustomerId”列。表tbAdmin的主键是“AdminId”列。 由于User类有一个名为“Id”的属性,我无法进行更新。
当你在tbCustomer表上提供更新时,我有什么方法可以映射,系统采用“Id”属性并输入“CustomerId”列吗? 对于tbAdmin也是如此。我希望他拿“Id”并放在“AdminId”中。
答案 0 :(得分:1)
如果您无法在类中重命名该属性,则最佳选项最有可能在更新中使用Named Parameters而不是传递对象。你的一个例子是
db.tbCustomer.UpdateById(Id: 1,
Username: "teste",
...);