Tag: entity framework core

entity framework核心自定义脚手架

我已经完成了我的SQLServer数据库的脚手架。 它会在指定的文件夹中创建POCO对象。 我想做的是它从我的基类扩展。 我也使用存储库模式,所以我需要在每个实体上都有Id密钥,我不想在每次重新扩展数据库时更改它。 脚手架模型示例 public partial class Food { public int Id { get; set; } public string Name { get; set; } public string Description { get; set; } public double Price { get; set; } } 预期结果: public partial class Food : EntityBase { public string Name { get; set; } public […]

字符串参数’migrationId’不能为空

如果这已经得到回答,请提前道歉,但我诚实地深挖并找不到与此错误有关的任何内容。 简而言之,我无法使用ASP.NET Core 1.1.2项目中的代码对我的数据库进行任何更新。 这是一个例外,因为它错过了一个我认为不与PMC有关的论点。 使用“更新数据库”时出现错误消息: 用于交叉检查Google的文字;-) System.ArgumentException: The string argument ‘migrationId’ cannot be empty. at Microsoft.EntityFrameworkCore.Utilities.Check.NotEmpty(String value, String parameterName) at Microsoft.EntityFrameworkCore.Migrations.HistoryRepository.GetAppliedMigrations() at Microsoft.EntityFrameworkCore.Migrations.Internal.Migrator.Migrate(String targetMigration) at Microsoft.EntityFrameworkCore.Design.Internal.MigrationsOperations.UpdateDatabase(String targetMigration, String contextType) at Microsoft.EntityFrameworkCore.Design.OperationExecutor.UpdateDatabase.c__DisplayClass0_1.b__0() at Microsoft.EntityFrameworkCore.Design.OperationExecutor.OperationBase.Execute(Action action) The string argument ‘migrationId’ cannot be empty. Migrations文件夹与我的’_EFMigrationsHistory’表相同(忽略计划更新的上次迁移): 我甚至已经删除了迁移文件夹和’_EFMigrationsHistory’表并再次启动,这表示同样的错误。 我也打算测试’v2.0.0-preview2-final’以防它是一个bug,但遗憾的是我的VS版只需要发布版本,显然你需要15.3。 版本信息: Visual Studio Enterprise 2017 – 15.2(26430.16)发布 entity framework核心v1.1.2 ASP.NET […]

实体类型“类型”处于阴影状态。 有效模型要求所有实体类型都具有相应的CLR类型

我正在使用Asp.net Core和EF core来设置IdentityServer4。 在此过程中,我想将数据合同和数据访问与核心项目分开。 为此,我创建了两个相关项目,一个包含DbContext,另一个包含合同。 最终我想让事情变得更复杂,但首先我只想尝试向IdentityUser添加一个相关对象,该对象默认为ApplicationUser,并在涉及Asp.net Identity的默认项目中存储为ApsnetUsers。 为此,我创建了一个inheritanceIdentityUser的基础ApplicationUserDto类。 我已经将补充对象/表添加到该对象,并通过更新ModelBuilder测试应用程序,最终,所有内容都按预期工作。 现在的问题。 我的最终目标是两个有两个独立的类,它们都inheritanceApplicationUserDto,一个用于内部用户,一个用于外部用户。 每个人都有自己的补充一对一数据表。 为了开始构建这个,我创建了两个类,InternalUserDto和InternalUserProfilePropertiesDto。 ApplicationUserDto类: namespace SingleSignOn.Identity.DataAccess.Contracts { public class ApplicationUserDto: IdentityUser {} } InternalUserDto.cs namespace SingleSignOn.Identity.DataAccess.Contracts { public class InternalUserDto : ApplicationUserDto { public virtual InternalUserProfilePropertiesDto InternalUserProfilePropertiesDto { get; set; } public InternalUserDto() { } } } InternalUserProfilePropertiesDto.cs namespace SingleSignOn.Identity.DataAccess.Contracts.UserProperties { public class InternalUserProfilePropertiesDto { […]

EF 7(核心)。 像AddTransient一样创建DBContext

根据文档,我配置DbContext如下面的DI在范围内注册它(每个http请求) services.AddEntityFramework() .AddSqlServer() .AddDbContext(options => { options.UseSqlServer(Configuration[“Data:DefaultConnection:ConnectionString”]); } ); 当我尝试在另一个线程中访问它时出现问题。 public class HomeController : Controller { private readonly DBData _context; public HomeController(DBData context) { _context = context; } public IActionResult StartInBackground() { Task.Run(() => { Thread.Sleep(3000); //System.ObjectDisposedException here var res = _context.Users.FirstOrDefault(x => x.Id == 1); }); return View(); } } 我想为每个调用配置DbContext创建(AddTransition)。 它可以让我编写下一个代码 public void […]

.NETentity framework核心

我已经阅读了过去两年发布的关于EF的几乎所有其他问题。 我没有下载其他软件包的问题,​​它只是不会为我安装的entity framework。 我甚至尝试安装最新版本的Nuget并在我的项目目录中使用它的工具来恢复包 – 后来我将这行添加到我的.csproj中: 首先我尝试了这个命令: dotnet restore 输出这个: C:\Path\To\My\Project>dotnet restore Restore completed in 100.41 ms for C:\Path\To\My\Project\TestNuget.csproj. Restore completed in 68.84 ms for C:\Path\To\My\Project\TestNuget.csproj. 结果如下: > dotnet ef No executable found matching command “dotnet-ef” 所以我尝试了这个(使用最新版本的Nuget截至今天的日期): nuget restore Example.csproj 输出这个: MSBuild auto-detection: using msbuild version ‘15.6.85.37198’ from ‘C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\MSBuild\15.0\bin’. Committing restore… […]

entity framework一对多的关系

我的EF查询需要大约3秒来获取10个玩家,因为它获取了另一个表的所有500k +行,而不是我需要的几个。 这是PlayerEntity: namespace RocketLeagueStats.Database.Entities { [Table(“players”, Schema = “public”)] public class PlayerEntity { [Key] [Column(“id”)] public int Id { get; set; } [Column(“unique_id”)] public string UniqueId { get; set; } [Column(“display_name”)] public string DiplayName { get; set; } [Column(“platform_id”)] [JsonIgnore] public int PlatformId { get; set; } [ForeignKey(“PlatformId”)] public PlatformEntity Platform { get; set; […]

保护EntityFramework核心应用程序使用的SQLite数据库

我正在尝试使用EntityFramework Core 1.0(EntityFramework 7的新名称)来管理C#Desktop应用程序中的SQLite数据库。 我阅读官方文档和我的测试应用程序。 我的问题是:密码保护数据库是否可能? 我知道有很多方法可以做到这一点,它也存在允许这样做的.NET类System.Data.SQLite,但是如何使用EFCore 1呢? 我无法理解是否有可能。 感谢帮助, 恩里科

如何使用Entity Framework 7在代码中首先处理这两个模型?

问题 我正在编写将模拟库的概念ASP.NET 5 MVC6的certificate。 我正在使用CTP6和beta3。 如何使用代码优先方法在Entity Framework 7中定义它们的关系? 货架和书籍需要连接表。 在我看来,这个应用程序将一次考虑一个架子和自己的书籍。 换句话说,一个书架与书籍有一对多的关系。 楷模 货架型号: public class Shelf { public int ShelfId { get; set; } public string ShelfName { get; set; } public ShelfType MyProperty { get; set; } public virtual List Books { get; set; } public DateTime Created { get; set; } public string […]

如何简化与entity framework的有多种关系的访问?

这是我想要做的: var user = db.User.First(conditions); user.Book.First(); 目前这是我必须这样做的。 var user = db.User.Include(“Book”).First(conditionsForUser); user.Book.First(); 我想简化这个的原因是因为我不想在每次想要访问关系时指定包含的内容。 看起来很麻烦。 例如:鉴于我之前已经检索过用户,我希望能够执行以下操作: user.Book.First() user.Blog.First() user.SomeOtherHasManyRelationship.Where(conditions) 这是我到目前为止: public object RelationshipFor(string relationship) { using (var db = User.DbContext()) { var relationshipType = TypeRepresentedBy(relationship); // unused for now, not sure if I need the type of the relationship var myTable = ((ICollection)db.Send(RelationshipName)); // RelationshipName is […]

entity framework7和SQLite表没有创建

我已经尝试了一段时间来弄清楚如何使用单个DBContext以Code First方式创建多个表而没有任何运气。 我确信这只是我对框架的不熟悉,但我不确定我缺少什么。 这是一个使用实体和DBContext的简单示例。 [Table(“MyEntity”)] public class MyEntity { [Key, DatabaseGenerated(DatabaseGeneratedOption.Identity)] public Guid Id { get; set; } public string MyColumn { get; set; } public int MyNumber { get; set; } } [Table(“MySecondEntity”)] public class MySecondEntity { [Key, DatabaseGenerated(DatabaseGeneratedOption.Identity)] public Guid Id { get; set; } public string MyColumn { get; set; } public […]