gpt4 book ai didi

c# - 放置 Database.SetInitializer 的地方

转载 作者:IT王子 更新时间:2023-10-29 04:09:10 27 4
gpt4 key购买 nike

我正在开发一个项目,该项目最终可能会有多个 UI 版本/变体,但到目前为止,我的解决方案 Web 中有两个子项目 - 包含带有 ASP.NET MVC 的 Web 界面。服务项目是我定义数据库上下文和模型的地方。

我的目标是在我的 Web 项目中对 EF 特定代码的引用最少或可能没有。我希望它是独立的,所以当我用服务后端切换 dll(从 SQL 到 XML 或 MySQL)时,我不应该在我的 MVC 项目中进行多次修改。

这是它的样子:

Project layout

我的问题是:- 到目前为止,除了 Global.asax,我还没有发现在其他地方使用 Database.SetInitializer 的例子。如果在类似工厂的 DatabaseContextProvider 类或从上下文中提取数据并使用 DTO 将其提供给 UI 的服务类中更改模型,我想重新创建数据库。那个位置有什么缺点吗?- 我希望使用 Properties/Settings.settings 文件配置上下文的 connectionString - 这合理吗?

最佳答案

为避免耦合,我不希望在包含 DataContext 的程序集之外设置初始化程序。因此,我为 DataContext 添加了一个静态构造函数。这样,每个引用此程序集的项目都将享受初始化程序而无需显式设置它,并且每个进程只设置一次初始化程序。

static MyDataContext()
{
Database.SetInitializer(new MigrateDatabaseToLatestVersion<MyDataContext, Configuration>());
}

当然,连接字符串将从应用程序配置文件中获取。

关于c# - 放置 Database.SetInitializer 的地方,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8679562/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com