c# - .NET - Microsoft.Data.Entity 中是否有 DbSet Find 方法?

标签 c# sql-server asp.net-mvc entity-framework asp.net-mvc-5

我正在使用 ASP.NET MVC 5 创建一个 MVC 应用程序,它使用 Entity Framework 来处理数据库。

这是一个简单的应用程序,具有 CRUD 功能,可通过数据库将项目添加到列表中。我可以创建项目并将它们保存到数据库中,现在我想查看特定项目的页面。

我在之前的应用程序中使用 Find 完成了此操作DbSet 上的方法对象,但该方法是 System.Data.Entity 的一部分。我能够以这种方式创建一个应用程序,但对于 ASP.NET 5,看起来我需要以不同的方式配置数据库连接,使用 Startup.cs 中的这些行:

    public void ConfigureServices(IServiceCollection services)
    {
        services.AddEntityFramework()
            .AddSqlServer()
            .AddDbContext<MyDbContext>(options =>
            options.UseSqlServer(Configuration["Data:DefaultConnection:ConnectionString"]));

        services.AddMvc();
    }

这要求我使用Microsoft.Data.Entity而不是System.Data.Entity .

这是 MyDbContext类:

public class MyDbContext : DbContext
{

    public virtual DbSet<TestModel> TestModels { get; set; }

    protected override void OnConfiguring(DbContextOptionsBuilder options)
    {
        options.UseSqlServer(@"Server=(localdb)\MSSQLLocalDB;Database=EmptyMVCAuthentication01;integrated security=True;");
    }
}

我希望查看特定页面的操作执行如下操作:

    public IActionResult Details(int id)
    {
        Course course= db.Courses.Find(id);
        return View(course);
    }

(上面的 dbMyDbContext 的私有(private)实例)

但是,没有 Find Microsoft.Data.Entity中的方法。关于我可以从这里去哪里有什么建议吗?

最佳答案

新版本的 Entity Framework (截至目前的 EF 7)中不存在

Find() 方法。根据 github issue页面,他们将其添加到积压工作中,因为很多人都在请求 FindFindAsync 方法。因此,这可能会在未来的版本中提供。

目前,您可以根据需要使用 FirstOrDefault()

public IActionResult Details(int id)
{
    var course= db.Courses.FirstOrDefault(d=>d.Id==id);
    if(course==null)
    {
      return View("NotFound");
    }
    return View(course);
}

假设 Id 是您的Course 模型的主键。

有一些解决方法,例如按照 here 的描述编写扩展方法。 。但我更喜欢 FirstOrDefault()FirstOrDefaultAsync() 因为它们给了我我想要的东西。

关于c# - .NET - Microsoft.Data.Entity 中是否有 DbSet Find 方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34407123/

相关文章:

c# - 为什么我的二进制文件可以在 Windows 8 上运行,但不能在 Windows 7 上运行?

c# - 如何判断两个多边形是否相交?

sql - 在 sql server 中搜索 LEN() 函数的替代函数以进行优化

json - 当值未命名时将 json 值检索到列中

c# - 从 Dictionary 中获取特定值的键作为 List<>

C# 正则表达式验证字符串

sql-server - TSQL - 查找购买了两套产品的客户

c# - 如何获取枚举值 ASP.NET MVC

c# - 如何使用 ActionLink MVC 5 执行以下 sql 查询?

c# - ASP.NET MVC 网站在任何浏览器上被重定向到本地 IIS 而不是 IIS Express