Tag: entity framework core

entity framework核心 – 自定义脚手架

在Entity Framework 6中,我们可以通过运行添加脚手架使用的T4模板 Install-Package EntityFramework.CodeTemplates.CSharp 但是在Entity Framework Core中,脚手架系统似乎没有使用T4模板,看起来脚手架也不能定制。 它似乎都在c#类中,例如。 https://github.com/aspnet/EntityFramework/blob/a508f37cf5a0246e9b92d05429153c3d817ad5ec/src/Microsoft.EntityFrameworkCore.Tools.Core/Scaffolding/Internal/EntityTypeWriter.cs 有没有办法自定义脚手架的输出?

ASP.NET vNext和EF7中的多个dbContexts

我正在努力与使用MVC 6和EF7的ASP.NET vNext构建Web系统相处。 我正在看这个教程: http : //stephenwalther.com/archive/2015/01/17/asp-net-5-and-angularjs-part-4-using-entity-framework-7 在页面上,您将看到如何将dbContext添加到项目中,并在启动文件中注册,如下所示: // Register Entity Framework services.AddEntityFramework(Configuration) .AddSqlServer() .AddDbContext(); 上下文类看起来像这样: public class MoviesAppContext:DbContext { public DbSet Movies { get; set; } } 这一切都很好,但现在我需要添加额外的DbContext。 虽然我不知道如何注册这个额外的上下文,以便它将被EF使用并可能在我的项目中使用。 假设我已经创建了一个像这样的新上下文: public class MyNewSuper:DbContext { public DbSet Model1 { get; set; } public DbSet Model2 { get; set; } } 我如何继续注册它以便在我的项目中使用?

我可以阻止Entity Framework Core使用部分数据填充我的结果吗?

在Entity Framework Core文档的这个页面上,它说当查询加载的数据时: entity framework核心将自动将导航属性修复为先前加载到上下文实例中的任何其他实体。 因此,即使您没有明确包含导航属性的数据,如果之前加载了部分或全部相关实体,仍可能会填充该属性。 无论是Eager还是Explicit都是如此。 我觉得这很令人沮丧,因为它会返回部分数据,这使得它看起来像一个完整的列表,因为没有任何迹象表明它是部分的。 例: 说我有以下两个类: class User { int Id { get; set; } string Name { get; set; } List Messages { get; set; } } class Message { int Id { get; set; } List Users{ get; set; } } 我使用以下代码查询: _dbContext.Users .Include(u => u.Messages) .Single(u => u.Id […]

属性“x”不是实体类型“y”的导航属性

我正在使用EF Core和ASP Core 2.0。 使用最新的Identity框架。 我在页面All上得到了这个例外。 InvalidOperationException:属性“User”不是实体类型“Gallery”的导航属性。 ‘Include(string)’方法只能与”一起使用。 分隔的导航属性名称列表。 ApplicationUser看起来像: public class ApplicationUser : IdentityUser { public ICollection Galleries { get; set; } } 实体库看起来像: public class Gallery { public int Id { get; set; } public Guid UserId { get; set; } public string Title { get; set; } public int? ArticleId { get; […]

aspnet核心entity framework7自引用“作业”1到多表

我有一个包含工作的“工作”表。 事实上乔布斯并不总是一气呵成……你可以找到一份有很多访问的工作。 我打算将其表示为另一项工作,但通过自引用linkId链接回原始工作。 我无法使用流畅的API代表这一点。 它是一对多关系..一个工作可能有很多访问,因此一些linkId指向原始工作。 链接ID将返回原始作业ID。 它也是可选的,因为大多数工作可能一次性完成.. 我已经找到了这个,但很难将其他例子变成这个例子,因为很多它们是一对一的,而且那些给出一对多例子的例子似乎是使用不同的EF6。 我的工作表是: using System; namespace JobsLedger.Model.Entities { public class Job : IEntityBase { public int Id { get; set; } public string Model { get; set; } public string Serial { get; set; } public string ProblemDetails { get; set; } public string SolutionDetails { get; set; } […]

EF7 beta5:外键返回空值

我使用ASP.NET5和Entity Framework 7.0.0-beta 5创建了一个API。 我创建了Model,DbContext和Repository,当我尝试从数据库中检索数据时,除了外键数据外,我得到了所有数据。 外键值始终为null。 的DbContext public class MrBellhopContext : DbContext { public DbSet Company { get; set; } public DbSet CompanyStatus { get; set; } protected override void OnModelCreating(ModelBuilder modelBuilder) { modelBuilder.Entity().Table(“Company”); modelBuilder.Entity().Key(c => c.CompanyId); modelBuilder.Entity().Index(c => c.Name); modelBuilder.Entity().Reference(c => c.Status).InverseReference().ForeignKey(c => c.StatusId); modelBuilder.Entity().Table(“CompanyStatus”); modelBuilder.Entity().Key(c => c.StatusId); base.OnModelCreating(modelBuilder); } } 模型 public class […]

如何在DbSet.Find()中包含相关表?

如果我想在EF7查询中包含相关对象,那么它很简单: var myThing = db.MyThings .Include(t => t.RelatedThing) .Where(t => t.SomeCondition == true) .ToList(); 此外,在DbSet上有一个很好的方法,可以通过其键轻松加载单个对象: var myThing = db.MyThings.Find(thingId); 但是现在我想通过它的Id加载myThing ,以及它的RelatedThing 。 不幸的是(并且可以理解) .Find()是DbSet的方法,而不是IQueryable 。 显然我可以做到这一点: var myThing = db.MyThings .Include(t => t.RelatedThing) .SingleOrDefault(t => t.MyThingId == thingId); 但我特别想使用.Find()方法,因为它很好且通用,而且我正在编写一个通常加载记录的方法以及由Expression<Func>指定的“包含”关系。 有什么建议怎么做?

无法从EF Core 1.1.2升级到2.0.0版

总而言之,我最近开始研究使用EF Core 1.1.2的项目。 我看到2.0发布的地方,因为当我尝试将EF核心添加到项目中时,我开始遇到错误。 我无法更新现有项目,我创建了一个全新的控制台项目。 将.Net框架设置为4.6.1仍然没有运气。 我总是收到以下消息。 有没有人遇到过这个问题? 提前致谢 安装包:无法安装包’Microsoft.EntityFrameworkCore.SqlServer 2.0.0’。 您正在尝试将此软件包安装到以“.NETFramework,Version = v4.6.1”为目标的项目中,但该软件包不包含任何与该框架兼容的程序集引用或内容文件。

在DbContext.OnConfiguring和AspCore Startup.ConfigureServices中定义optionsBuilder时,预期的结果是什么?

我的ASP.NET核心有这个类首先被调用 public class Startup { public IConfiguration Configuration { get; } // This method gets called by the runtime. Use this method to add services to the container. public void ConfigureServices(IServiceCollection services) { services.AddDbContext(options => options.UseSqlServer(Configuration.GetConnectionString(“DefaultConnection”))); services.AddMvc(); } 我的背景是这样的: public class IssuerContext : DbContext { protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder) { var connString = “Server=(localdb)\\mssqllocaldb;Database=HavenServer;ConnectRetryCount=0;Trusted_Connection=True;MultipleActiveResultSets=true\””; […]

如何仅在相关实体中包含选定的属性

我只能包含相关实体。 using (var context = new BloggingContext()) { // Load all blogs, all related posts var blogs1 = context.Blogs .Include(b => b.Posts) .ToList(); } 但是,我不需要整个BlogPost实体。 我只对特定属性感兴趣,例如: using (var context = new BloggingContext()) { // Load all blogs, all and titles of related posts var blogs2 = context.Blogs .Include(b => b.Posts.Select(p => p.Title) //throws runtime exeption […]