gpt4 book ai didi

c# - 将迁移与 Entity Framework Core 结合使用

转载 作者:行者123 更新时间:2023-11-30 14:06:28 24 4
gpt4 key购买 nike

我只是想在我的 .Net Core 类库中使用迁移,但出于某种原因,我得到了以下返回:

$ dotnet ef migrations add InitialMigration
No executable found matching command "dotnet-ef"

我搜索了很多次,但没有一个例子适用于我的场景。

我的解决方案是这样的:

enter image description here我的上下文类:

using Microsoft.EntityFrameworkCore;
using VirtualStore.Data.Mapping;

namespace VirtualStore.Data
{
public class Context<T> : DbContext where T : Entity
{
public DbSet<T> Entity { get; set; }

public Context()
{
Database.EnsureCreated();
}

protected override void OnModelCreating(ModelBuilder modelBuilder)
{
base.OnModelCreating(modelBuilder);
}

protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
{
optionsBuilder.UseSqlServer("Data Source=DESKTOP-3UEM3PC;Initial Catalog=VIRTUALSTORE;Integrated Security=SSPI;");
base.OnConfiguring(optionsBuilder);
}
}
}

还有我的存储库类:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Linq.Expressions;
using VirtualStore.Data.Mapping;
using VirtualStore.Models.Data.Repository;

namespace VirtualStore.Data
{
public class Repository<T> : IRepository<T> where T : Entity
{
public Context<T> Context { get; set; }

public void Delete(T entity)
{
using (Context = new Context<T>())
{
Context.Remove(entity);
Context.SaveChanges();
}
}

public void DeleteAll(IEnumerable<T> entities)
{
using (Context = new Context<T>())
{
Context.RemoveRange(entities);
Context.SaveChanges();
}
}

public IEnumerable<T> Get(Func<T, bool> predicate)
{
using (Context = new Context<T>())
{
return Context.Entity.Where(predicate).ToList();
}
}

public IEnumerable<T> GetAll()
{
using (Context = new Context<T>())
{
var all = Context.Entity.OrderBy(x => x.Id).ToList();
return all;
}
}

public T GetById(long id)
{
using (Context = new Context<T>())
{
return Context.Entity.Where(x => x.Id == id).OrderBy(x => x.Id).FirstOrDefault();
}
}

public void InsertAll(IEnumerable<T> entities)
{
using (Context = new Context<T>())
{
Context.Entity.AddRange(entities);
Context.SaveChanges();
}
}

public void Insert(T entity)
{
using (Context = new Context<T>())
{
Context.Entity.Add(entity);
Context.SaveChanges();
}
}

public void Update(T entity)
{
using (Context = new Context<T>())
{
Context.Update(entity);
Context.SaveChanges();
}
}

public void UpdateAll(IEnumerable<T> entities)
{
using (Context = new Context<T>())
{
Context.UpdateRange(entities);
Context.SaveChanges();
}
}
}
}

项目链接:https://github.com/otaviolarrosa/VirtualStore

谁能帮帮我?我开始使用迁移的命令有什么问题?

最佳答案

将以下内容添加到您的VirtualStore.Data 项目的VirtualStore.Data.csproj 文件中。

<ItemGroup>
<DotNetCliToolReference Include="Microsoft.EntityFrameworkCore.Tools.DotNet" Version="2.0.1" />
</ItemGroup>

保存更改后,您应该能够从命令提示符访问这些命令。命令提示符当前目录需要与 VirtualStore.Data 项目位于同一目录中。

没有这个引用,这些命令将不可用。

关于c# - 将迁移与 Entity Framework Core 结合使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47543492/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com