Tag: entity framework core

entity framework核心中的ObjectStateManager.ObjectStateManagerChanged

我似乎无法在ef核心中找到ObjectStateManager.ObjectStateManagerChanged 。 这已被删除,如果是这样,有什么替代方案? 我想在实体加载到上下文时收到通知。

如何从.Net核心应用程序中的SQL语句获取标量值?

.Net核心控制台应用程序(EF核心2.0 / Sql服务器)中的以下代码。 var sql = _context.Set() .FromSql(“select dbo.FunctionReturnVarchar({0});”, id); 得到以下exception? 无法为“字符串”创建DbSet,因为此类型未包含在上下文的模型中。 这是一种没有定义具有字符串属性的类的方法吗?

EF7 beta6:保存多个实体时出错

我正在使用ASP.NET5和Entity Framework 7.0.0-beta 6创建API,当我尝试在多个请求中执行各种更新时,我得到了以下exception: 无法跟踪“公司”,因为已经跟踪了具有相同密钥的此类型的另一个实例。 对于新实体,请考虑使用IIdentityGenerator生成唯一键值。 这是我的代码: public class MrBellhopContext : DbContext { public DbSet Company { get; set; } protected override void OnModelCreating(ModelBuilder modelBuilder) { modelBuilder.Entity(entity => { entity.Key(c => c.CompanyId); entity.Index(c => c.Name); entity.Property(c => c.CompanyId).ValueGeneratedOnAdd(); }); modelBuilder.UseSqlServerIdentityColumns(); base.OnModelCreating(modelBuilder); } } public class Company { public int CompanyId { get; set; } public […]

跳过并且不使用MySQL EntityFrameworkCore

我试图从MySQL数据库中分页Products ,但是如果我使用Skip()或Take()它会返回一个空的Json数组作为我的web api响应,就像这样 [] 但扩展方法,如FirstOrDefault() , Where() …工作正常。 这是代码片段: public IActionResult GetPage(int page, int pageSize = 2) { int productCount = _context.Products.Count(); // 5 float totalPages = (float)Math.Ceiling((float)productCount / pageSize); //2.5 — round to 3 if (page totalPages) return NotFound(); var products = _context.Products.Skip((page – 1) * pageSize).Take(pageSize); //skip & take err mysql ef return […]

仅在EF Core中为“true”创建唯一约束

我有一个跟踪记录附件的课程。 每个记录可以有多个RecordAttachments,但是要求每个记录只能有一个标记为IsPrimary RecordAttachment。 public class RecordAttachment { public int Id { get; set; } public int RecordId { get; set; } public string Details { get; set; } public bool IsPrimary { get; set; } public Record Record { get; set; } } 我不能只使用.HasIndex(e => new { e.RecordId, e.IsPrimary }).IsUnique(true)因为每个Record可能有多个false值。 基本上我需要一个RecordId和IsPrimary == true的唯一约束,虽然这不起作用: entity.HasIndex(e => […]

删除EF Core 1.0 RC2中的自动增量(以前的EF 7 RC2)

在Entity Framework Core 1.0 RC2(以前的Entity Framework 7 RC2)中,默认情况下,所有整数主键都是自动增量字段。 我尝试了一切来删除它。 从使用数据注释到流畅的API,没有任何作用。 使用数据注释: [Key, Column(Order = 1, TypeName = “INT”), DatabaseGenerated(DatabaseGeneratedOption.None)] 使用流畅的API: modelBuilder.Entity().HasKey(t => t.ProdId).HasAnnotation(“DatabaseGenerated”, DatabaseGeneratedOption.None); //OR use the following modelBuilder.Entity().HasKey(t => t.ProdId).HasAnnotation(“DatabaseGenerated”, 0); //OR use the following modelBuilder.Entity().HasKey(t => t.ProdId).HasAnnotation(“Sqlite:Autoincrement”, false); 没有任何工作:( 你能帮我么? 更新 正如请求的那样,这是运行add-migration LocalDB_v1后得到的表脚本 migrationBuilder.CreateTable( name: “tblProduct”, columns: table => new { ProdId = […]

entity framework核心/ SQLite:加入“扁平化”结果后的GroupJoin

使用Entity Framework Core 2.1和SQLite数据库,如果我在另一个Join之后使用它,我会从LINQ GroupJoin获得不同的行为。 目前尚不清楚这是一个错误还是我忽略了什么。 我创建了一个最小的VS2017项目来重现这个,可以在这里找到: https://gitlab.com/haddoncd/EntityFrameworkGroupJoinIssue 在这个例子中,我为Blog表中的每一行获取一个对象,每个对象包含多个PostTitles: db.Blogs .GroupJoin( db.Posts, s => s.BlogId, p => p.BlogId, (s, ps) => new { s.BlogId, s.BlogTitle, PostTitles = ps.Select(p => p.PostTitle), } ) .OrderBy(x => x.BlogId)) 但是在这个例子中,结果是“扁平的” – 我为每个Blog-Post对获得一个对象,就像你从传统的SQL外连接一样: db.Subscriptions .Join( db.Blogs, s => s.BlogId, b => b.BlogId, (s, b) => new { s.SubscriptionId, b.BlogId, b.BlogTitle, […]

entity framework7身份种子

我们在EF7中使用Code First,我想添加一个具有Identity Seed的列,该另一个值为1。 目前,我们可以在迁移过程中通过EntityTypeBuilder将其设置为自动增量: entityBuilder.Property(e => e.PropertyName).ValueGeneratedOnAdd(); 但是我无法找到如何更改身份种子。 它是否仍然需要像其他版本的EF一样更新? 例如,编写一些自定义的SQL并在迁移期间运行它? 如何在entity framework代码中首先为几个表生成标识种子值 如何使用SQL Compact 4首先使用Entity Framework 4代码在ID列上设置Identity种子? 在EF7中,似乎没有SqlServerMigrationSqlGenerator > override Generate(AltherTableOperation alterTableOperation)代码SqlServerMigrationSqlGenerator > override Generate(AltherTableOperation alterTableOperation) ?

流利的Apientity framework核心

用户可以拥有1个或0个帐户 public class User { public int UserId { get; set; } public string Name { get; set; } public string Email { get; set; } public Account Account { get; set; } } public class Account { public int AccountId { get; set; } public DateTime CreatedDateTime { get; set; } public User User […]

无法在SQLite的Connection String中提供密码

我使用SQLite和Entity Framework。 我使用以下代码创建数据库: class MyContext : DbContext { // DbSets, OnModelCreating(), etc. protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder) { optionsBuilder.UseSqlite(“Data Source=c:\\test.db”); } } //this is in my test method using (var db = new MyContext()) { db.Database.EnsureCreated(); } 上面的代码有效。 数据库被创建。 但我想通过在连接字符串中提供密码来加密数据库: optionsBuilder.UseSqlite(“Data Source=c:\\test.db;Password=mypassword”); 在这种情况下,在EnsureCreated之后,我会遇到exception System.Data.dll中发生类型为“System.ArgumentException”的未处理exception附加信息:不支持关键字:’password’。 使用密码有什么问题? 如何加密SQLite数据库?