在 .Net Core MVC 中重复代码以在 dbcontext 中做同样的事情时,这是否被认为是不好的做法?
Is this considered bad practise in .Net Core MVC, when repeating code to do the same thing in dbcontext?
我有三个 类,代表数据库中的实体。
它们都有相同的字段,唯一不同的是它们的名称,例如:DealerId 和 CompanyId。
我不确定这是否被认为是不好的做法,但是当我编写查询以从数据库中检索他们的信息、保存到数据库等时。我为每个人都写了同样的东西,只是永远改变第一个词。例如。 ****ID,****姓名。
有更好的方法吗?我知道我可以使用动态对象,但我不确定这是否也被视为不良做法?
这里是一些将重复的代码的简短示例。
public Companies GetCompany(int id)
{
Companies company = null;
using (MySqlConnection connection = _GetConnection)
{
connection.Open();
string query = "SELECT ddb_company_id, ddb_company_name FROM `ddb_companies` WHERE ddb_company_id = @Val1;";
MySqlCommand command = new MySqlCommand(query, connection);
command.Parameters.AddWithValue("Val1", id);
command.Prepare();
using (MySqlDataReader reader = command.ExecuteReader())
{
while (reader.Read())
{
company = new Companies
{
CompanyId = reader.GetInt32("ddb_company_id"),
CompanyName = reader.GetString("ddb_company_name"),
AddressValues = new AddressValues(),
FieldValues = new List<FieldValues>()
};
}
}
这不是坏习惯 - 这是数据库设计的问题。这完全取决于您的需求,以及您为什么想出您所做的 namig。
但是,当数据集增长或您必须重命名字段时,它可能会变得难以维护。
您可以考虑的一种方法是在 sql 查询中使用 class 属性的名称(这也意味着重命名数据库中的字段以匹配该名称)。这将确保您的代码和 sql 字段同步。缺点是,如果您不重命名数据库字段,则在 class 中重命名 属性 可能会破坏您的应用程序 - 因此您必须注意这一点。
您可以将查询重写为:
string query = $"SELECT "{nameof(CompanyId)}", "{nameof(CompanyName)}" FROM `ddb_companies` WHERE "{nameof(CompanyId)}" = @Val1;";
我有三个 类,代表数据库中的实体。 它们都有相同的字段,唯一不同的是它们的名称,例如:DealerId 和 CompanyId。
我不确定这是否被认为是不好的做法,但是当我编写查询以从数据库中检索他们的信息、保存到数据库等时。我为每个人都写了同样的东西,只是永远改变第一个词。例如。 ****ID,****姓名。
有更好的方法吗?我知道我可以使用动态对象,但我不确定这是否也被视为不良做法?
这里是一些将重复的代码的简短示例。
public Companies GetCompany(int id)
{
Companies company = null;
using (MySqlConnection connection = _GetConnection)
{
connection.Open();
string query = "SELECT ddb_company_id, ddb_company_name FROM `ddb_companies` WHERE ddb_company_id = @Val1;";
MySqlCommand command = new MySqlCommand(query, connection);
command.Parameters.AddWithValue("Val1", id);
command.Prepare();
using (MySqlDataReader reader = command.ExecuteReader())
{
while (reader.Read())
{
company = new Companies
{
CompanyId = reader.GetInt32("ddb_company_id"),
CompanyName = reader.GetString("ddb_company_name"),
AddressValues = new AddressValues(),
FieldValues = new List<FieldValues>()
};
}
}
这不是坏习惯 - 这是数据库设计的问题。这完全取决于您的需求,以及您为什么想出您所做的 namig。 但是,当数据集增长或您必须重命名字段时,它可能会变得难以维护。 您可以考虑的一种方法是在 sql 查询中使用 class 属性的名称(这也意味着重命名数据库中的字段以匹配该名称)。这将确保您的代码和 sql 字段同步。缺点是,如果您不重命名数据库字段,则在 class 中重命名 属性 可能会破坏您的应用程序 - 因此您必须注意这一点。
您可以将查询重写为:
string query = $"SELECT "{nameof(CompanyId)}", "{nameof(CompanyName)}" FROM `ddb_companies` WHERE "{nameof(CompanyId)}" = @Val1;";