【发布时间】:2017-08-03 23:29:09
【问题描述】:
所以,我有一个用于分离关注点/逻辑的项目的解决方案...数据库上下文、服务、UI 等等。 我想要的是能够从我的数据库上下文项目中获取我的 UI 项目中的文件夹位置,以便在我通过 EF 更新我的 SQLite 时使用。 我可以轻松地在我的 UI 项目中获取 bin 文件夹,并且在技术上工作正常,因为 bin 文件夹 SQLite 文件将在项目运行时使用,但 bin 文件不包含在源代码管理中,因此数据库文件位于 bin 文件夹之外build 被复制到 bin 文件只是一种更好的方法。
_connectionString = $"Data Source={AppContext.BaseDirectory}\\Sqlite\\SomeName\\SomeName.sqlite";
这将在执行 EF 合并时将 bin 构建器作为基本目录。 我确实尝试了各种方法来获得它,但除了硬编码之外,我无法实现我想要的。硬编码显然不是一种选择。是否可以获取解决方案位置,然后使用它导航到解决方案中的不同项目? .Net Core 或 .Net 框架方法都可以。
为了澄清,我希望我的数据上下文项目在另一个项目文件夹中创建 SQLite 数据库文件,并且我希望该文件不在运行时生成的 /bin 文件夹中。我需要一种方法来动态获取解决方案中另一个项目的位置。
假设我有一个由 2 个项目组成的解决方案。
- 数据库上下文项目
- UI/api 项目
UI/API 项目有一堆文件夹,如您所料。我想获取其中一个的位置以在我的连接字符串中使用。 并且没有 web 配置是不合适的,因为它们无论如何都不是动态的,其次它们被弃用并且有充分的理由,但是使用 json 配置文件也不是一个选项,因为它仍然不是动态的。 配置文件适用于始终位于同一位置的数据库,并且您的项目位置无关紧要。但在这种情况下,如果其他人提取了我的源代码,它将不在同一个目录中,并且 SQLite 文件是本地的,而不是在线托管的。
我想要得到的是我的解决方案的路径是 c:/projects/Solution 还是 d:/c#/random/StackOverflower/Projects/Solution
我能得到的是 c:/projects/Solution/UI/Bin/Debug
我的最终目的是获取 c:/projects/Solution/UI/Sqlite/
【问题讨论】:
-
不太清楚你在问什么。您是在问如何将应用层中的值用作数据层中的连接字符串?这正是
app.config或web.config文件的用途。应用程序将有一个包含环境设置的配置文件,例如连接字符串,应用程序使用的代码将能够在运行时获取这些值。 -
@David 澄清说,配置文件是静态的,在这种情况下不起作用。我正在处理可以更改目录的项目中的本地文件。
标签: c# .net entity-framework