什么是数据库模型?

时间:2019-05-14 01:10:01

标签: c# database model-view-controller

什么是“数据库模型”?这是一个合适的类,可以包含用于读写数据库方法的方法吗?

在对MVC进行了一些研究之后,我有信心说出Model部分是我应该与数据库进行通信的地方。我目前有我的实体类(例如经典的“ Person”)和一个名为DatabaseModel的类,该类具有用于在数据库上执行SQL查询的公共方法。

然后,在控制器的其他类中,我创建一个DatabaseModel对象,并在该类中执行公共方法以检索SQL查询结果。

我正确地解决了这个问题吗?另外,从侧面来看,我觉得DatabaseModel类将变得非常大。是否有解决这个问题的好策略(可能针对相关查询)。我曾想将其分为C#中的局部类,但这是我目前的最佳猜测。

2 个答案:

答案 0 :(得分:0)

数据库模型是数据库架构的映射结构,在这种情况下,它将是Entity类,因此请回到定义;这么说。为了交互或查询数据库,您可以遵循两种常见的模式,即 DAO 模式,而这只是一个类,它将包含每个实体 CRUD 的主要查询操作 strong>操作或[保存,更新和删除],这意味着如果您具有PersonEntity,则应该具有PersonDAO。

第二种模式是存储库模式,我认为您将在任何功能强大的框架中使用它,并且将为您提供现成的CRUD方法来支持您直接使用它,而无需编写用于每个操作,都不同于DAO模式。

说到每个类中的代码数量,这实际上取决于情况,但是您应该遵循简洁的代码策略,即对于任何类,您都不应做任何事情来发现自己拥有超过400行代码,例如以下示例你真的需要这个。

答案 1 :(得分:0)

在对MVC进行了一些研究之后,我很有信心地说我应该在Model部分与数据库进行通信。我目前有我的实体类(例如经典的“ Person”)和一个名为DatabaseModel的类,该类具有用于在数据库上执行SQL查询的公共方法。

实际上我不同意,这是我刚开始时的误解。对我来说,M是到数据库的映射,它是数据库本身,使用实体框架或您选择的其他框架,因此您可以使用代码优先方法创建数据库,而无需接触SQL。

然后,在控制器的其他类中,创建一个DatabaseModel对象,并在该类中执行公共方法以检索SQL查询结果。

这应该是您的存储库的工作,您可以在其中检索SQL查询结果,请记住,这不是实际的控制器。

我正确地解决了吗?另外,从侧面来看,我有一个感觉,这个DatabaseModel类将变得非常大。是否有解决这个问题的好策略(可能针对相关查询)。我曾想将其分为C#中的局部类,但这是我目前的最佳猜测。

您快到了,现在拥有的是模型(数据库映射),存储库(您在其中执行和检索数据),但是您丢失了 Controller (您可以使用依赖项注入获取存储库并执行实际工作,例如将数据映射到 ViewModel ), ViewModel (在此处映射数据,以便仅从数据中获取所需的内容并将其发送到视图,乍一看似乎毫无意义,为什么我们不能仅将数据发送至视图,但是这样做有很多好处,例如,您只处理实际需要的内容,可以先验证用户输入(客户端验证),然后再将其映射回数据等),然后最后是 View (您的显示)。< / p>

所以对我来说,MVC只是一个标准,并不意味着您只有Model View和Controller,我从不喜欢首字母缩略词,它一开始会引起太多混乱,对我来说,应该是: M(模型,数据库映射)C(控制器)VM(ViewModel)V(视图),以及模型和控制器之间的存储库,但我们将其省略,因为这是个人喜好,大多数当时人们只是对Model和ViewModel之间的差异感到困惑。