我正在使用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 表中,主键是"客户 ID"列。而表的主键 tbAdmin 是"管理员 ID"列。由于 User 类具有一个名为"Id"的属性,因此我无法进行更新。
当您在 tbCustomer 表上更新时,我有什么方法可以映射,系统采用"Id"属性并进入"客户 ID"列?对于 tbAdmin 也是如此。我希望他把"Id"放在"AdminId"中。
如果无法重命名类中的属性,则最佳选择最有可能在更新中使用命名参数,而不是传递对象。你的一个例子是
db.tbCustomer.UpdateById(Id: 1,
Username: "teste",
...);