我在VS for Mac上创建了数据库模型,并使用终端进行了迁移:
dotnet ef migrations add IntitialMigration
Run Code Online (Sandbox Code Playgroud)
然后,我更新了数据库:
dotnet ef database update
Run Code Online (Sandbox Code Playgroud)
但是在更改模型并创建另一个迁移之后:
dotnet ef migrations add SecondMigration
Run Code Online (Sandbox Code Playgroud)
并尝试更新数据库:
dotnet ef database update SecondMigration
Run Code Online (Sandbox Code Playgroud)
我收到以下错误:
数据库中已经有一个名为“电子邮件”的对象。
我进行了搜索,发现了一个可能的解决方案:
Add-Migration SecondMigration -IgnoreChanges
Run Code Online (Sandbox Code Playgroud)
但这仅适用于Windows上的PMC。我在Mac上使用VS,并且所有命令都在Terminal上键入。有人知道更改模型后如何使用迁移来更新数据库吗?
database migration command-line-interface .net-core visual-studio-mac
我正在开发一个 API,它有两个控制器:PicturesController和AccountController。有一个方法PicturesController可以返回图像,我想知道如何获取它的 URL。
在另一种PicturesController方法中,我使用以下代码获取了 URL:
var url = Url.RouteUrl("GetPicture", new { id = picture.Id }, Request.Scheme);
Run Code Online (Sandbox Code Playgroud)
但我需要从另一个控制器 ( ) 获取相同方法的 URL AccountController。
我尝试了以下代码,但结果为空。
var url = Url.Action("GetPicture", "PicturesController", new { id = picture.Id }, Request.Scheme);
Run Code Online (Sandbox Code Playgroud)
这就是方法:
public class PicturesController : Controller
{
...
// GET api/pictures/id
[HttpGet("{id}", Name = "GetPicture")]
public async Task<ActionResult> Get(Guid id)
{
var picture = await _context.Pictures.FirstOrDefaultAsync(p => p.IsActive() && p.Id == id);
if (picture == null) …Run Code Online (Sandbox Code Playgroud) 我有以下模型:
public class Promotion : BaseModel
{
[Required]
public string Description { get; set; }
[Required]
public string Market { get; set; }
[Required]
public double Price { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
它已创建一个已更新到数据库的迁移。并且一些促销已插入数据库中。但是我需要将促销模型更改为:
public class Promotion : BaseModel
{
[Required]
public string Description { get; set; }
[Required]
public Market Market { get; set; }
[Required]
public double Price { get; set; }
}
public class Market : BaseModel
{
[Required]
public string Name { get; set; } …Run Code Online (Sandbox Code Playgroud)