【问题标题】:LINQ to SQL Connection Strings with class library projects带有类库项目的 LINQ to SQL 连接字符串
【发布时间】:2023-04-08 03:03:02
【问题描述】:

带有类库项目的 LINQ to SQL 连接字符串

默认情况下,创建新的 LINQ to SQL 模型 (.dbml) 会将 应用程序设置文件中的连接字符串以及 web.config/app.config。这对网络来说不是什么大问题 项目,但是类库项目呢?我有联系 我可以用它来检查所有页面中的连接的类,但我有一个 根本无法读取 DataContext 的错误。

这是一张显示我的问题的照片。

【问题讨论】:

    标签: asp.net linq-to-entities


    【解决方案1】:

    一般来说,类库不支持配置文件。有一些方法可以让它工作,但这不是一个好的做法,因为不同的应用程序可能使用同一个库与数据库的不同实例进行交互。我建议查看像 Ninject 这样的依赖注入或控制反转解决方案,以将连接字符串从引用该库的应用程序传递给构造函数。

    更新:

    如果您绝对必须从程序集而不是调用应用程序中读取配置文件,则可以使用ConfigurationManager.OpenExeConfiguration() 来完成。 SO上有几个答案提供了这样做的代码示例,但我不会链接到它们,因为我强烈建议你不要走那条路。

    【讨论】:

    • 感谢您的建议,但现在如果想完成如何解决此错误??
    【解决方案2】:

    从外观上看,您没有使用 LINQ to SQL - 我只能看到一个 EntityFramework edmx。检查您的代码生成策略,并确保您尝试实例化正确的上下文名称(认为它是实体容器名称设置的任何内容)。

    您还需要确保引用了 System.Configuration。

    【讨论】:

    • 我的代码生成器为空 // 模型“C:\Users\alaa\Documents\Visual Studio 2012\Projects\SocialNetworking\DataAccess\SocialNetworking.edmx”的默认代码生成已禁用。 // 要启用默认代码生成,请将“代码生成策略”设计器 // 属性的值更改为备用值。当模型在设计器中打开时,该属性在属性窗口中可用。
    • 好的,网上有很多关于如何配置实体框架的文档。关于这个问题,您可以通过 System.Configuration.ConfigurationManager 读取配置字符串。
    • 但是,正如上面答案中提到的,如果您正在构建一个可扩展的应用程序,您应该考虑应用结合 DI/IoC 的最佳实践。
    【解决方案3】:

    您需要将连接字符串放在主应用程序 app.config 中

    只需将连接字符串的副本放在那里,您就可以访问它们,或者在本例中为 web.config

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-07-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多