我有一个控制台应用程序,可以根据 poco 实体自动生成存储库模式的 C# 类和接口,这些实体是使用 Visual Studio 中的 NuGet 包管理器控制台中的 Scaffold-DbContext 命令自动生成的。为了自动化生成 pocos 以及相关存储库和接口的整个过程,我希望能够直接从控制台应用程序调用 Scaffold-DbContext 命令。是否可以在本机 CLI 之外调用 NuGet 包管理器控制台命令?
我正在 ASP MVC Core 2 上创建一个电子商务网站。我继承了我的用户并继承了用于处理用户数据的IdentityUser
上下文,并继承了用于处理产品和订单等的不同上下文。IdentityDbContext
DbContext
现在,我想将订单或购物车链接到特定用户,但无法思考如何在订单表中引用用户,因为它们处于不同的上下文中。我还使用 EF 创建的默认 guid 作为两个表中的主键。
我应该放弃DbContext
并只使用IdentityDbContext
吗?这样做是否会导致身份中的异步方法和其他常见的非异步方法出现问题。
这是我的课程中的一些代码片段
using Microsoft.AspNetCore.Identity;
using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
namespace shophe1.Models
{
public enum Gender { Male, Female, Other}
public class User : IdentityUser
{
public string FullName { get; set; }
public Gender Gender { get; set; }
public string ReferralID { get; set; }
public DateTime RegistrationDateTime { get; set; }
public string ActivationDateTime { get; set; } …
Run Code Online (Sandbox Code Playgroud) 所以,我有一个带有这样的道具的模型:
public DateTime Date { get; set; }
Run Code Online (Sandbox Code Playgroud)
我尝试为此字段设置默认值,如下所示:
modelBuilder.Entity<Record>().Property(r => r.Date).HasDefaultValueSql("NOW()");
Run Code Online (Sandbox Code Playgroud)
问题是未设置数据库列默认值。当我使用“NOW()”函数时,迁移有效,但正如我所说,数据库中未设置列默认值。当我尝试其他 MySql 日期时间函数时,我收到此错误:
您的 SQL 语法有错误;检查与您的 MariaDB 服务器版本对应的手册,了解在第 1 行 '' 附近使用的正确语法
我在这里缺少什么?
mysql entity-framework entity-framework-core ef-core-2.0 entity-framework-migrations
我对 EF Core 用于单元测试的内存功能感到非常兴奋。它减轻了我编写专用存储库的负担,只是为了使代码单元可测试。但仅仅在集合中进行内存测试是不够的。
EF Core In Memory Provider 是否验证引用约束?
实体框架核心
执行更新数据库时抛出错误
错误:- 在表“UserRoleRelationship”上引入 FOREIGN KEY 约束“FK_UserRoleRelationship_UserRoels_ParentUserRoleId”可能会导致循环或多个级联路径。指定 ON DELETE NO ACTION 或 ON UPDATE NO ACTION,或修改其他 FOREIGN KEY 约束。无法创建约束或索引。
public class UserRoleRelationship
{
[Key]
public int Id { get; set; }
[Required]
public Guid UserRoleRelationshipId { get; set; }
public virtual UserRole ChildUserRole { get; set; }
public int ChildUserRoleId { get; set; }
public virtual UserRole ParentUserRole { get; set; }
public int ParentUserRoleId { get; set; }
}
public class UserRole
{
[Key]
public int Id { get; …
Run Code Online (Sandbox Code Playgroud) migration entity-framework entity-framework-core asp.net-core ef-core-2.0
我正在处理 Entity Framework Core DbContext 预热时间。我有非常大的 DbContext,我正在使用 AddDbContextPool() 选项注册 DbContexes,该选项将 DbContext 注册为单例,应用程序重用它。
在早期版本的 EF 中,为了加快应用程序启动时间,应用了以下解决方法:使用缓存 DbModelStore、生成预编译视图和/或使用 NGen 生成实体框架的预编译版本以避免抖动。
但是,我没有看到在 Entity Framework Core 上应用这些的任何有效方法。我什至找不到任何其他方法来避免 DbContext 的初始启动/蠕虫启动时间。
我们的应用程序的蠕虫启动时间大约为 30+ 秒。
当我的应用程序第一次启动时,我尝试初始化 DbContextes 但这似乎不是一个优雅或事件负担得起的解决方案。
Entity Framework Core 团队 (Github) 上有对编译视图的功能请求,但是此功能没有截止日期。
我需要知道是否有任何我可以应用的解决方法和/或解决方案。
谢谢
这是我的 appsettings.json
"ConnectionStrings": {
"Circolari": "Server=abcde;Database=Circolari;Trusted_Connection=True;"
}
Run Code Online (Sandbox Code Playgroud)
这是我的startup.cs
public Startup(IConfiguration configuration, IHostingEnvironment env)
{
Configuration = configuration;
IConfigurationBuilder configurationBuilder = new ConfigurationBuilder()
.SetBasePath(env.ContentRootPath)
.AddJsonFile("appsettings.json", optional: true, reloadOnChange: true);
Configuration = configurationBuilder.Build();
}
// This method gets called by the runtime. Use this method to add services to the container.
public void ConfigureServices(IServiceCollection services)
{
//Circolari
string connectoionString = Configuration.GetConnectionString("Circolari");
services.AddDbContext<CircolariContext>(options => options.UseSqlServer(connectoionString));
services.AddMvc();
}
Run Code Online (Sandbox Code Playgroud)
所以当我进行查询时
using (CircolariContext db = new CircolariContext(new DbContextOptions<CircolariContext>()))
{
List<Argomenti> listaArgomenti = db.Argomenti.ToList();
}
Run Code Online (Sandbox Code Playgroud)
我有问题:处理请求时发生未处理的异常。
InvalidOperationException: …
我尽力在谷歌上搜索这个,没有运气。除了作者,一个是 SQLite,另一个是 Microsoft,在做出选择之前,有什么重要的区别需要注意吗?
我正在为单元测试创建 SQLite In Memory 数据库:
var connection = new SqliteConnection("DataSource=:memory:");
connection.Open();
try
{
var options = new DbContextOptionsBuilder<BloggingContext>()
.UseSqlite(connection)
.Options;
// Create the schema in the database
using (var context = new BloggingContext(options))
{
context.Database.EnsureCreated();
}
// Run the test against one instance of the context
using (var context = new BloggingContext(options))
{
var service = new BlogService(context);
service.Add("http://sample.com");
}
// Use a separate instance of the context to verify correct data was saved to database
using (var context = …
Run Code Online (Sandbox Code Playgroud) 我正在为 EF Core开发一个帮助程序库,目前它通过提供自定义DbContext
类来工作,但我想添加一种无需自定义基类即可使用它的方法。我可以通过从StateManager继承并告诉 EF 将我的实现用于IStateManager
.
我找到了两个告诉 EF 使用我的实现的选项:
第一个是简单地调用DbContextOptionsBuilder.ReplaceService Method。
第二种方法是强制转换DbContextOptionsBuilder
为IDbContextOptionsBuilderInfrastructure
,调用AddOrUpdateExtension
它,传递一个IDbContextOptionsExtension
实例并在ApplyServices
方法中调用ServiceCollectionServiceExtensions.AddScoped
方法。
在这两个选项中,哪个是首选?这两种方法有什么区别吗?
entity-framework entity-framework-core ef-core-2.0 ef-core-2.1
ef-core-2.0 ×10
c# ×6
asp.net-core ×3
ef-core-2.1 ×3
.net-core ×2
sqlite ×2
.net ×1
entity-framework-migrations ×1
migration ×1
mysql ×1
tdd ×1
unit-testing ×1