- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
在 VS2015 中处理基于 ASP.NET Core(以前的 ASP.NET 5)、.NET Core CLR RC1、EF Core(以前的 EF 7)、启用 EF 迁移、LocalDb v11.0 的 Web 项目。
我手动(通过SQL命令)创建了一个数据库,并将MDF/LDF文件放在项目子目录下,情况类似于:
MySolution\src\MyProject\MyLocalData\
- MyLocalDb.mdf
- MyLocalDb_log.ldf
这是在 appsettings.json
中设置的 "ConnectionString"
键的值(或者至少是我尝试过的许多方法之一):
"Data Source=(LocalDb)\\v11.0;AttachDbFilename=.\\MyLocalData\\MyLocalDb.mdf;Integrated Security=True"
初始迁移已正确创建,现在我卡在 dnx ef database update
命令(请参阅 official tutorial ),这给出了此错误:
Error Number:15350,State:1,Class:14 An attempt to attach an auto-named database for file .\MyLocalData\MyLocalDb.mdf failed. A database with the same name exists, or specified file cannot be opened, or it is located on UNC share.
我很确定没有其他数据库具有该名称,在我的用户主目录中检查了文件,并在 Sql Server Management Studio 中检查了 LocalDb 实例中的数据库。事实上,如果我在 AttachDbFilename
中切换到绝对文件路径,迁移会进一步进行(并发现与通过 EF 流畅界面设置的列属性相关的其他错误,但这是另一回事)。
所以在我看来,这完全是找到在 AttachDbFilename
中使用的正确相对 路径的问题。我在这里搜索相关主题,但找不到任何答案。我还尝试更改相对路径,假设 current 文件夹是 wwwroot
或 artifacts
文件夹,但没有成功。
有人知道如何正确设置吗?助教
最佳答案
我现在确实有这个工作,这是一项艰苦的工作。关键是环境信息“ContentRootPath”,在您的示例中,它将返回 MySolution\src\MyProject 的路径
我的测试应用程序是下面的“数据库优先”教程 https://docs.efproject.net/en/latest/platforms/aspnetcore/existing-db.html
包括这个变化,以适应我教授网络应用程序编程和需要独立应用程序的情况,我和学生可以在彼此的机器上运行以进行讨论、标记等。
在 appsettings.json 中
{
"ConnectionStrings": {
"DefaultConnection": "Server=(localdb)\\mssqllocaldb;AttachDBFilename=%CONTENTROOTPATH%\\App_Data\\blogging.mdf;Trusted_Connection=true;MultipleActiveResultSets=true"
}
独特的部分是:
AttachDBFilename=%CONTENTROOTPATH%\\App_Data\\blogging.mdf
好的,我使用的是传统名称“App_Data”,但它在 ContentRootPath 下比在“wwwroot”下更安全。
然后在Startup.cs中
public class Startup
{
//20160718 JPC enable portable dev database
private string _contentRootPath = "";
public Startup(IHostingEnvironment env)
{
//20160718 JPC enable portable dev database
_contentRootPath = env.ContentRootPath;
...
}
// This method gets called by the runtime. Use this method to add services to the container.
public void ConfigureServices(IServiceCollection services)
{
//20160718 JPC enable portable dev database
string conn = Configuration.GetConnectionString("DefaultConnection");
if(conn.Contains("%CONTENTROOTPATH%"))
{
conn = conn.Replace("%CONTENTROOTPATH%", _contentRootPath);
}
...
}
上面的“...”代表Visual Studio 2015生成的标准代码。
请注意,当我们像这样“发布”应用程序时,我们需要手动将自定义文件夹和文件(例如我的“App_Data”文件夹)复制并粘贴到已发布的版本中。或者我们可以将自定义文件夹名称(在本例中为“App_Data”)添加到文件“project.json”。
同样值得一提的是,对于包括 Controller 类在内的任何类,我们都可以添加一个带有参数 env 的构造方法,托管环境将为我们提供有用的信息,包括 ContentRootPath。用于自定义文件存储,例如为我们的用户提供文件上传。
public class HomeController : Controller
{
//20160719 JPC access hosting environment via controller constructors
private IHostingEnvironment _env;
public HomeController(IHostingEnvironment env)
{
_env = env;
}
public IActionResult Index()
{
string contentRootPath = _env.ContentRootPath;
return View();
}
好吧,这只是为了演示原理,因为我在“return View()”上添加了一个断点,然后将鼠标悬停在 contentRootPath 上以说明这一点。
ASP.NET Core MVC6 看起来像是我遇到的更大的学习和教学挑战之一。祝我们所有人好运。我发现了一个很好的进步:在 MVC5 中,我们发生了一些戏剧性的事情,让我们的自定义数据和身份 AspNetUser 表在一个数据库中很好地共存。看起来它正在成为 MVC6 中更整洁的命题。
关于c# - 如何在 ASP.NET Core 中设置正确的 AttachDbFilename 相对路径?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37058684/
我试图对 ASP.Net MVC 有一个高层次的理解,我开始意识到它看起来很像原始的 ASP 脚本。过去,我们将“模型”/业务逻辑代码组织到 VBScript 类或 VB COM 组件中。 当然,现在
我已经搜索了一段时间,但似乎找不到答案。 我想在我的旋转木马中显示一个计数器,左边是当前项目(工作),左边是项目总数。 我的代码:
. 最佳答案 Scott Gu 称这些为代码块。这就是我的看法。 http://weblogs.asp.net/scottgu/archive/2010/04/06/new-lt-gt-syntax
我有一个使用 Visual Studio 2010/.net 4/VB 制作的网站。 我真的很喜欢我发现的 FAQ 系统的布局,因为它很简单,但它是经典的 asp。所以,显然,我不能包括我的母版页布局
好吧,对于你们许多人来说,这个问题可能有一个非常明显的答案,但它让我难住了。 我有一个 asp.net Web 表单,上面有两个控件(嗯,不止这两个,但我们将重点关注这些) - 第一个是 asp:dr
当我将 ASP.NET 复选框控件设置为 asp.net 更新面板的异步回发触发器时,EventName 属性是什么? 最佳答案 我相信它是 CheckedChanged。 关于asp.net - a
我有一个用经典 asp 编写的(巨大的)网站。现在我必须切换到 vb.net (razor)。有没有办法将这两个结合起来直到切换完成? 有没有办法让应用程序与经典的 asp 和 vb.net 一起工作
I am creating a products page, where the user selects an option in a radiobuttonlist for example, an
我最近将一个经典的 ASP 应用程序转换为 ASP.NET 3.5,但我觉得我的经典 ASP 版本要快一些(我不知道可能买家会后悔)。 所以你们能帮我解决这个问题吗,让我知道哪个更快,asp、asp.
从本周开始,我被要求开始学习如何使用 ASP 开发网站。我通过 XNA 对 C# 有一定的经验,所以这部分对我来说并不是什么麻烦。 我一直在关注Music Store Tutorial这需要我设置一个
关闭。这个问题需要多问focused 。目前不接受答案。 想要改进此问题吗?更新问题,使其仅关注一个问题 editing this post . 已关闭 8 年前。 Improve this ques
我想将一些表单变量发布到经典 ASP 页面中。我不想改变经典的 ASP 页面,因为需要完成大量的工作,以及消耗它们的页面数量。 经典的 ASP 页面需要将表单变量 Username 和 Userpas
已结束。此问题正在寻求书籍、工具、软件库等的推荐。它不满足Stack Overflow guidelines 。目前不接受答案。 我们不允许提出寻求书籍、工具、软件库等推荐的问题。您可以编辑问题,以便
在某种程度上,这可能是一个异端问题。我们有一个大型站点,其中许多页面仍在ASP中。通常,并没有真正动态的,而是包括(通过SSI或Server.Execute)定期重新生成的HTML块。看起来好像是一个
关闭。这个问题需要多问focused 。目前不接受答案。 想要改进此问题吗?更新问题,使其仅关注一个问题 editing this post . 已关闭 9 年前。 Improve this ques
我有一个遗留的 ASP 应用程序——在不久的某个时候——需要迁移到 ASP.Net 2.0(以与也在 2.0 中的其他应用程序兼容)。 对于这类事情是否有最佳实践,即作为第一步将当前 html、vbs
我目前在一家公司工作,该公司使用 ASP.NET Webforms 和旧 ASP 页面的组合进行 Web 开发。这对于他们当前的项目来说效果很好,但我想说服/建议他们切换到 ASP.NET MVC,因
我有一个经典的 asp 应用程序。我想将该页面的竞赛表格发布到 Asp.Net 表格。原因是我想在进入数据库之前使用我在 Asp.Net 页面中内置的大量逻辑进行验证,而我对 asp 不太了解。更不用
我知道在 ASP.NET MVC 中,您可以拥有移动 View 并执行类似 Index.mobile.cshtml 的操作。和 _Layout.mobile.cshtml并且服务器知道将这些 View
我需要从一些服务器端 c#.net 代码中调用经典 asp 页面上的 VBscript 函数 - 有谁知道一种干净的方法来做到这一点?在 .net 中重写函数不是一种选择。 我会再解释一下这个问题..
我是一名优秀的程序员,十分优秀!