Tag: entity framework core

如何从Visual Studio Team Services运行ASP.NET核心entity framework迁移

我有一个使用ASP.NET Core 1.1创建的Web API项目。 我使用Entity Framework Core Migrations。 在当地,一切都运作良好。 但是,我正在尝试使用Visual Studio团队服务在我发布时自动运行迁移,但无法弄清楚如何执行此操作。 是否有一些内置组件,或者我应该尝试在代理上安装dotnet ef工具并以这种方式运行它?

添加迁移失败,因为未安装EntityFrameworkCore.Tools

我想通过以下教程创建一个使用EF Core的控制台应用程序: http : //ef.readthedocs.io/en/latest/platforms/full-dotnet/new-db.html 。 我的问题是,我无法执行该声明 Add-Migration 如教程中所述。 它告诉我: PM> Add-Migration MyFirstMigration Cannot execute this command because ‘Microsoft.EntityFrameworkCore.Tools’ is not installed in project ‘src\AppEf’. Add ‘Microsoft.EntityFrameworkCore.Tools’ to the ‘tools’ section in project.json. See http://go.microsoft.com/fwlink/?LinkId=798221 for more details. 所有添加的组件: 怎么了? 更新 声明dotnet restore工作, dotnet-ef –help根本不起作用。 你可以看到,该语句是在项目文件夹中执行的。

避免在同一个DbContext上同时运行多个任务的entity framework错误

我在一个运行带有Sqlite的Entity Framework Core的Dotnet Core项目中有一个WebApi控制器。 动作中的此代码会出现错误: var t1 = _dbContext.Awesome.FirstOrDefaultAsync(a => […]); var t2 = _dbContext.Bazinga.FirstOrDefaultAsync(b => […]); var r1 = await t1; var r2 = await t2; 错误是: Microsoft.EntityFrameworkCore.Query.RelationalQueryCompilationContextFactory:错误:迭代查询结果时数据库中发生exception。 System.ObjectDisposedException:已关闭安全句柄 Microsoft.EntityFrameworkCore.Query.RelationalQueryCompilationContextFactory:错误:迭代查询结果时数据库中发生exception。 System.InvalidOperationException:只能在连接打开时调用ExecuteReader。 对我来说这两个错误都表明DbContext会发生一些事情,比如过早处置(虽然不是DbContext本身)。 DbContext是在控制器构造函数中使用Dotnet Core的管道“通常的方式”注入的,配置如下所示(来自我的Startup.cs ConfigureServices方法体): services.AddDbContext(options => options.UseSqlite(connectionString)); 如果我将上面的错误产生代码改为: var r1 = await _dbContext.Awesome.FirstOrDefaultAsync(a => […]); var r2 = await _dbContext.Bazinga.FirstOrDefaultAsync(b => […]); …我没有看到提到的错误,因此得出的结论是在我的DbContext的同一个实例上同时运行多个任务(如上所述注入)是导致问题的原因。 […]

使用EF Core在通用存储库中使用Reflection包含所有导航属性

我正在为EF Core项目创建一个通用存储库,以避免为所有模型编写CRUD。 我遇到的主要障碍是没有加载导航属性,因为Core还不支持延迟加载,而generics类显然无法为类特定属性定义.Include语句。 我正在尝试为我的Get方法执行类似的操作以动态包含所有属性: public virtual T Get(Guid itemId, bool eager = false) { IQueryable querySet = _context.Set(); if (eager) { foreach (PropertyInfo p in typeof(T).GetProperties()) { querySet = querySet.Include(p.Name); } } return querySet.SingleOrDefault(i => i.EntityId == itemId); } 但是,当包含不是导航属性的属性时,它会引发错误。 我发现这个答案与EF 5相同,但它涉及EF核心中不存在的方法: EF5如何获取域对象的导航属性列表 是否有可能在EF Core中完成同样的事情?

entity framework核心忽略.Include(..)而没有.ToList(..)间接

如EF Core Documentation中的“加载相关数据”中所述,我们可以使用.Include(..)来急剧地从DbSet加载导航属性(或通用IQueryable链接回EF上下文)。 这意味着,给定以下模型: public class TestEntityA { public int Id { get; set; } public int TestEntityBId { get; set; } public TestEntityB TestEntityB { get; set; } public string BProperty { get { return TestEntityB.Property; } } } public class TestEntityB { public int Id { get; set; } public string Property { […]

在其图中附加具有现有和新实体混合的实体(Entity Framework Core 1.1.0)

将附加实体的实体附加到现有实体时,我遇到了一个问题(我将现有实体称为数据库中已存在的实体,并正确设置其PK)。 问题是使用Entity Framework Core 1.1.0时。 这与Entity Framework 7(Entity Framework Core的初始名称)完美配合。 我没有尝试使用EF6或EF Core 1.0.0。 我想知道这是回归,还是故意改变行为。 该模型 测试模型包括Place , Person和Place与Person之间的多对多关系,通过名为PlacePerson的连接实体。 public abstract class BaseEntity { public int Id { get; set; } public string Name { get; set; } } public class Person : BaseEntity { public int? StatusId { get; set; } public Status Status { […]

在Entity Framework Core中使用两列的一对多关系

在我的项目中,我有一个表格Translation ,可以翻译任何模型。 为实现此目的,该表有两个字段: Model和ModelId 。 Model属性包含一个表示模型类型的整数, ModelId具有此模型的id。 因此,例如: Product表的modeltype为id 1 。 要获取ID为317的产品的所有翻译,我搜索Model=1 AND ModelId=317 。 现在我想在Entity Framework Core中创建这种关系。 我的所有模型都inheritance自BaseModel类, BaseModel具有一个属性ModelType ,其中包含模型类型的id。 此字段未映射,因此在数据库中不可用。 我试图使用流畅的api创建关系,但它不允许我指定更多的列来过滤。 modelBuilder.Entity() .HasMany(bm => bm.Translations) // Extra filters 有没有办法创建这种关系,而无需为每个需要翻译的查询手动创建连接?

entity framework7没有配置数据库提供程序=>将迁移移动到另一个项目时

我是EF7的新手。 我知道这是一个重复的问题: 没有数据库提供程序配置EF7 但是在你想要关闭这个问题之前等待……继续阅读 services.AddEntityFramework() .AddSqlServer() .AddDbContext(options => options.UseSqlServer(Configuration[“Data:DefaultConnection:ConnectionString”])); services.AddIdentity() .AddEntityFrameworkStores() .AddDefaultTokenProviders(); services.AddScoped(); 现在我在我的EF项目的cmd窗口上运行dnx ef database update命令并得到以下错误: C:\TGB.DataAccess>dnx ef database update System.InvalidOperationException: No database providers are configured. Configure a database provider by overriding OnConfiguring in your DbContext class or in the AddDbContext method when setting up services. bei Microsoft.Data.Entity.Internal.DatabaseProviderSelector.SelectServices(ServiceProviderSource providerSource) bei Microsoft.Data.Entity.Internal.DbContextServices.c__DisplayClass6_0.b__0() bei Microsoft.Data.Entity.Internal.LazyRef`1.get_Value() bei […]

ASP.NET Core EF Add-Migration命令无法正常工作

当我在从同一教程创建的VS2015项目中运行PM> Add-Migration MyFirstMigration命令时,遵循此Microsoft教程 ,我得到以下错误,我无法解决: More than one DbContext was found. Specify which one to use. Use the ‘-Context’ parameter for PowerShell commands and the ‘–context’ parameter for dotnet commands. 值得注意的 我正在使用上面的教程,除了我正在使用Individual User Account身份validation而不是本教程中使用的No Authentication 。 我ASP.NeT Core 1.0 and VS2015-Update 3 on windows 8.1发布了最新版本的ASP.NeT Core 1.0 and VS2015-Update 3 on windows 8.1 这是一个新创建的项目。 没有手动安装其他DbContext

entity framework核心渴望加载然后包含在集合中

我在执行查询时要包含三个模型。 这是场景。 public class Sale { public int Id { get; set; } public List SaleNotes { get; set; } } public class SaleNote { public int Id { get; set; } public User User { get; set; } } public class User { public int Id { get; set; } } 我可以像这样急切加载SaleNotes …… _dbContext.Sale.Include(s […]