gpt4 book ai didi

c# - 如何在 ASP.NET 5 Beta 8 控制台应用程序中使用 EF7 并在没有 startup.cs 的情况下连接到 SQL Server?

转载 作者:太空狗 更新时间:2023-10-29 22:30:32 25 4
gpt4 key购买 nike

问题

我正在编写一个 asp.net 5 控制台示例应用程序,我想使用 Entity Framework 7 与我的后端通信。我知道如何在 Web 应用程序中执行此操作,但我不知道如何在不使用 startup.cs 而是使用 main.cs 时为控制台应用程序完成此操作。

代码

在 Web 应用程序中,您将在 startup.cs 中包含以下代码:

public void ConfigureServices(IServiceCollection services)
{
var connection = @"Server=(localdb)\mssqllocaldb;Database=EFGetStarted.AspNet5;Trusted_Connection=True;";

services.AddEntityFramework()
.AddSqlServer()
.AddDbContext<BloggingContext>(options => options.UseSqlServer(connection));
}

此处为 entityframework7 和正在使用 SQL Server 的连接字符串配置了服务。

尝试

我查看了 GitHub、Google 和 Bing,但只找到了使用 EF7 的 Web 应用程序的示例项目和代码。我没有找到讨论 EF7 与控制台应用程序的文档。

我想编写上面的代码,但将其放在我的控制台应用程序的 main.cs 中。我没有成功,显然在 main.cs 中有以下内容:

SampleConsoleDbContext scab = new SampleConsoleDbContext();

我无法告诉我的程序连接字符串是什么,我仍然怀疑它是否也是在 main.cs 中实例化上下文的正确方法。

如果您对这个有趣的问题有任何帮助、建议或意见,我将不胜感激。谢谢你。

最佳答案

Microsoft 实际上已经开始构建 documentation Entity Framework 7。

从他们的示例中,您可以通过覆盖 OnConfiguring 方法来内联配置上下文:

public class BloggingContext : DbContext
{
public DbSet<Blog> Blogs { get; set; }
public DbSet<Post> Posts { get; set; }

protected override void OnConfiguring(DbContextOptionsBuilder builder)
{
builder.UseSqlServer(@"<connection string>");
}
}

然后您可以在 Main 中创建您的上下文的实例:

class Program
{
static void Main(string[] args)
{
using (var db = new BloggingContext())
{
db.Blogs.Add(new Blog { Url = "http://blogs.msdn.com/adonet" });
var count = db.SaveChanges();
Console.WriteLine("{0} records saved to database", count);

Console.WriteLine();
Console.WriteLine("All blogs in database:");
foreach (var blog in db.Blogs)
{
Console.WriteLine(" - {0}", blog.Url);
}
}
}
}

在 ASP.NET 示例中,对 .AddEntityFramework() 的调用是为了让 EF 与 ASP.NET 的其余部分使用相同的服务提供者(想想依赖注入(inject))(这意味着 EF将获得与 ASP.NET 正在使用的相同的记录器等)。但是,如果您不想遵循该模式,则可以使用上面显示的方法。

关于c# - 如何在 ASP.NET 5 Beta 8 控制台应用程序中使用 EF7 并在没有 startup.cs 的情况下连接到 SQL Server?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33382880/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com