【问题标题】:Constructor of Dbcontext keeps changing the base argument on update of modelDbcontext 的构造函数不断更改模型更新的基本参数
【发布时间】:2018-09-28 12:48:06
【问题描述】:

在我的上下文类中,我有以下内容可以使项目成为数据的黑匣子。

     public MyEntities()
        : base("metadata = res://*/fda.csdl|res://*/fda.ssdl|res://*/fda.msl;provider=System.Data.SqlClient;provider connection string='data source=MyServer;initial catalog=CitywideEmployees;persist security info=True;user id=MyUserID;password=MyPassword!;MultipleActiveResultSets=True;App=EntityFramework'")
    {
    }

但是,当我使用“从数据库更新模型”选项更新 edmx 时,它总是会重置基本参数,就像它想在 App.config 文件中查找连接字符串一样。如何避免每次更新 edmx 时都必须更新基础?

谢谢。

【问题讨论】:

  • 如果您部署应用程序会怎样?您强制所有部署站点具有相同的服务器和数据库名称。
  • 是的,这很好,它是一个黑匣子——这就是目的。

标签: c# visual-studio entity-framework entity-framework-6


【解决方案1】:

打开您的 {your name}.Context.tt 并保存以下更改

<#=Accessibility.ForType(container)#> partial class <#=code.Escape(container)#> : DbContext
{
    public <#=code.Escape(container)#>()
        : base("name=<#=container.Name#>")
    {
<#

在引号中写着“name=”

替换为

<#=Accessibility.ForType(container)#> partial class <#=code.Escape(container)#> : DbContext
{
    public <#=code.Escape(container)#>()
        : base("metadata = res://*/fda.csdl|res://*/fda.ssdl|res://*/fda.msl;provider=System.Data.SqlClient;provider connection string='data source=MyServer;initial catalog=CitywideEmployees;persist security info=True;user id=MyUserID;password=MyPassword!;MultipleActiveResultSets=True;App=EntityFramework'")
    {
<#

保存您的 tt 文件

【讨论】:

  • 是否有使用此代码转义语法的资源链接?
  • 《编程实体框架:使用 ADO.NET 构建以数据为中心的应用程序》一书...作者 Julia Lerman 很好。您可以研究免费文章。我所知道的是如何将代码放入 tt 文件中,如果您更改 edmx 文件,则 tt 文件中的内容将显示在 edmx 中。如果您删除并创建一个全新的 edmx,我可以编写反射代码,在启动时从 global.asax 调用,它可以检查 dbcontext 父文件中的特定代码,并且在不向 tt 添加特定代码的情况下发出警报并且不运行和 edmx。这很难解释,但如果您愿意,我可以提供进一步的帮助。
猜你喜欢
  • 1970-01-01
  • 2013-11-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-18
  • 2020-10-17
  • 2013-10-28
  • 2023-03-07
相关资源
最近更新 更多