我搜索在某种情况下创建实体的最佳实践。
有一个样本:
我们在一个数据库中有 4 个表。
Table Server
id
name
...
Table Environment
id
name
Table Application
id
name
...
Table JCT_Application_Server_Environment
idApplication
idServer
idEnvironment
我们有 3 个表由 1 个表链接(JCT_Application_Server_Environment)
我的系统(在 asp.net 中)需要显示应用程序的“服务器”列表。
那么,我应该使用如下实体:
V1
class JCT_Application_Server_Environment
public idApplication
public idServer
public idEnvironment
对于每个项目,我都会加载服务器和环境。每次加载数据网格都将是“困难的”。就我的目的而言,我认为这不是好事。
或者更好地创建一个实体:
V2
class JCT_Application_Server_Environment
public ApplicationName
public ServeurName
public EnvironmentName
你有你需要的。很简单,取最小值。如果您需要更多,请花更多时间去做。
如果您有很多属性,则执行实体将需要时间。并且每个属性都已经在另一个实体(原始应用程序/服务器/环境)中创建。
或者可能
V3
class JCT_Application_Server_Environment
public Application //As Application entity
public Server //As Server entity
public Environment //As Environment entity
Sub New(row as datarow) //each New do a GetElementById on Database
me.Application = New Application(row("idApplication"))
me.Server = New Server (row("idServer "))
me.Environment = New Environment (row("idEnvironment "))
一开始需要时间来加载,但得到你需要的东西,也许更多。Datagrid 只需要知道取子值(Server.Name/Environment.Name)
第一个主要用于导入/导出系统。对于 webView,它不是我常用的版本,因为我更喜欢轻松处理 gridview 数据绑定。
第二个使用得更频繁,但实体仅用于一件事。1 个实体对应 1 个网格视图。实际情况适合第二个版本。我只是想知道第二个还是第三个更好。具有 .net 经验的开发人员通常会做什么。
如果您有任何其他选择,您可以将其发布为答案。
对于我的实际项目,我决定使用 V3,但仅用于容器。数据由 DAL 填充。
达尔做类似的事情
function GetList() as List(Of JCT_Application_Server_Environment)
Get List of Application_Server_Environment containing id's
for each item
grab Application, Server and Envirenment by id
create a new JCT_Application_Server_Environment with those 3
add to list of JCT_Application_Server_Environment
return list