在没有存储过程的情况下在 WebForms 中绑定数据模型的最有效方法?
Most effective way to bind data models in WebForms without stored procedures?
我刚开始在一家新公司工作,在为我们的外部产品构建支持工具的团队中。目前,支持工具是许多随机片段的混搭,试图通过大量不同的技术来解决各种不同的问题。主要产品正在过渡到执行应用程序大部分功能的功能模型,但是它使用存储过程来获取数据并将数据加载到这些模型。
在编写新工具的过程中,我一直在寻找一种更好的方法将数据从数据库绑定到模型,以便可以在应用程序内部对其进行操作。每个客户端都有自己的数据库,每次创建存储过程时,都必须跨多个不同的数据库创建它才能在全球范围内传播。如果我能减轻这种头痛,那将是非常有益的。
我正在考虑以类似于我在以前的 MVC 项目中使用它的方式使用 DbContext,但我不确定如何才能最好地做到这一点。每个客户端都有自己的数据库,名称中有客户端 ID,它们的连接字符串本质上是 "DATABASE_CLIENTID",因此当支持人员选择合适的客户端时,它会在运行时更改连接字符串以获取合适的数据。我只需要知道哪种方法最适合与这些数据交互以创建我们的工具。
公司正在切换到使用 Rivets、Typescript、Ajex 等的单页样式网站,因此我们的目标是在内部最好地模仿这一点。
我认为你可以通过使用最新的 Entity Framework 6 轻松地做到这一点,当你使用数据库优先方法生成模型时,它会生成部分实体 class 而你想要做的是添加另一个文件,用于为相同的部分 class 实现以下内容。因此,例如,如果您的实体模型称为 TemplateEntities,则使用以下代码创建一个新文件:
The generated TemplateEntities class is marked as partial.
您所要做的就是添加另一个文件,其中包含公开您要使用的构造函数的部分 class 定义的另一部分:
partial class TemplateEntities
{
public TemplateEntities( string nameOrConnectionString )
: base( nameOrConnectionString )
{
}
}
然后将您的连接字符串传递给此构造函数。
存储过程适用于非常复杂的事务,但如果仅用于加载数据,Entity Framework 应该可以正常工作。
我刚开始在一家新公司工作,在为我们的外部产品构建支持工具的团队中。目前,支持工具是许多随机片段的混搭,试图通过大量不同的技术来解决各种不同的问题。主要产品正在过渡到执行应用程序大部分功能的功能模型,但是它使用存储过程来获取数据并将数据加载到这些模型。
在编写新工具的过程中,我一直在寻找一种更好的方法将数据从数据库绑定到模型,以便可以在应用程序内部对其进行操作。每个客户端都有自己的数据库,每次创建存储过程时,都必须跨多个不同的数据库创建它才能在全球范围内传播。如果我能减轻这种头痛,那将是非常有益的。
我正在考虑以类似于我在以前的 MVC 项目中使用它的方式使用 DbContext,但我不确定如何才能最好地做到这一点。每个客户端都有自己的数据库,名称中有客户端 ID,它们的连接字符串本质上是 "DATABASE_CLIENTID",因此当支持人员选择合适的客户端时,它会在运行时更改连接字符串以获取合适的数据。我只需要知道哪种方法最适合与这些数据交互以创建我们的工具。
公司正在切换到使用 Rivets、Typescript、Ajex 等的单页样式网站,因此我们的目标是在内部最好地模仿这一点。
我认为你可以通过使用最新的 Entity Framework 6 轻松地做到这一点,当你使用数据库优先方法生成模型时,它会生成部分实体 class 而你想要做的是添加另一个文件,用于为相同的部分 class 实现以下内容。因此,例如,如果您的实体模型称为 TemplateEntities,则使用以下代码创建一个新文件:
The generated TemplateEntities class is marked as partial.
您所要做的就是添加另一个文件,其中包含公开您要使用的构造函数的部分 class 定义的另一部分:
partial class TemplateEntities
{
public TemplateEntities( string nameOrConnectionString )
: base( nameOrConnectionString )
{
}
}
然后将您的连接字符串传递给此构造函数。
存储过程适用于非常复杂的事务,但如果仅用于加载数据,Entity Framework 应该可以正常工作。