在 .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;";