【发布时间】:2020-10-20 21:44:33
【问题描述】:
我只是在学习Entity Framework Core 3.1。我想知道为什么所有的学习内容都是用ASP.Net Core来学习的!!所以我决定在Class Library 和Console Application 上测试一些代码。这是我非常简单的类库代码:
public class ApplicationDbContext : DbContext
{
private static readonly string ConnectionString = "Server=.;Database=Northwind;Trusted_Connection=True;";
public ApplicationDbContext(DbContextOptions<ApplicationDbContext> options) : base(options)
{
}
public DbSet<NimaCategory> NimaCategories { get; set; }
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
{
if (!optionsBuilder.IsConfigured)
{
optionsBuilder.UseSqlServer(ConnectionString);
}
}
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
modelBuilder.ApplyConfiguration(new NimaCategoryConfig());
}
}
我在创建Migration 时遇到了许多奇怪的错误,但最奇怪的是我必须将所有这些代码行写入我的Console Application:
public class Program
{
static void Main(string[] args)
{
Console.WriteLine("Hello EF Core")
}
public static IHostBuilder CreateHostBuilder(string[] args)
=> Host.CreateDefaultBuilder(args)
.ConfigureWebHostDefaults(
webBuilder => webBuilder.UseStartup<Startup>());
}
public class Startup
{
public void ConfigureServices(IServiceCollection services)
=> services.AddDbContext<ApplicationDbContext>();
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
}
}
问题是IHostBuilder 和ConfigureWebHostDefaults 是针对ASP.Net Core 的,它是依赖注入引擎。因此,根据以下链接,我更改了我的 csproj 文件:
IHostBuilder does not contain a definition for ConfigureWebHostDefaults
现在我无法运行我的控制台应用程序,因为它的性质已经改变并转换为 Web 项目。然后我添加一个窗口应用程序,我无法添加这些代码进行配置:
public static IHostBuilder CreateHostBuilder(string[] args)
=> Host.CreateDefaultBuilder(args)
.ConfigureWebHostDefaults(
webBuilder => webBuilder.UseStartup<Startup>());
和:
public class Startup
{
public void ConfigureServices(IServiceCollection services)
=> services.AddDbContext<ApplicationDbContext>();
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
}
}
我对这个问题有一些疑问:
-
为什么 EF Core 仅限于
ASP.Net Core?全世界的项目都是用ASP.Net Core写的吗? -
有没有人有使用 EF 核心以及 Windows 应用程序或控制台项目的经验并帮助解决问题?
谢谢
【问题讨论】:
-
EF 不限于 ASP。您可以在控制台和桌面应用程序中使用它。
-
你也可以分享你得到的“许多奇怪的错误”吗?
-
@GuruStron 你能以我使用它的方式显示一些对工作
EF Core的参考吗?我搜索了interent,但我没有找到任何东西 -
@GuruStron。这是其中之一:无法创建“ApplicationDbContext”类型的对象。有关设计时支持的不同模式,请参阅go.microsoft.com/fwlink/?linkid=851728
-
我有一个GitHub repository,其中包含使用 MS-NorthWind 数据库修订版的 win 表单的代码示例。没有一个代码示例是真正的应用程序,而是为了展示什么是可能的。 Try this project 设置为显示具有即时更新的 DataGridView,具有 DataGridViewComboBox 列并允许排序。也可以在其他 26 个项目中寻找想法。请注意,没有迁移 - 代码首先存在的数据库。
标签: c# entity-framework asp.net-core entity-framework-core migration