hly*_*tes 5 c# entity-framework-core asp.net-core-mvc asp.net-core
问题
我正在编写一个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));
}
Run Code Online (Sandbox Code Playgroud)
在这里,您可以为entityframework7配置服务,并使用SQL Server连接字符串.
尝试
我查看了GitHub,Google和Bing,但只找到了使用EF7的Web应用程序的示例项目和代码.我还没有找到与控制台应用程序讨论EF7的文档.
我想编写上面的代码,但是在我main.cs的控制台应用程序中有它.我没有成功,显然在main.cs中有以下内容:
SampleConsoleDbContext scab = new SampleConsoleDbContext();
Run Code Online (Sandbox Code Playgroud)
我无法告诉我的程序连接字符串是什么,我仍然怀疑这是获得上下文实例化的正确方法main.cs.
我很感激有关这个有趣问题的任何帮助,建议或评论.谢谢.
Microsoft实际上已经开始为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>");
}
}
Run Code Online (Sandbox Code Playgroud)
然后您可以在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);
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
在ASP.NET示例中,调用.AddEntityFramework()是允许EF使用与ASP.NET其余部分相同的服务提供程序(认为依赖注入)(这意味着EF将获得与ASP.NET一样的记录器等) .但是,如果您不想遵循该模式,那么您可以使用上面显示的方法.
正如Heavyd所说,大部分内容是不需要的,只是为了设置 DI,这也是我阅读代码的方式,可能是错误的。
至于设置连接字符串,您可以简单地执行以下操作:
var connection = @"Server=(localdb)\mssqllocaldb;Database=EFGetStarted.AspNet5;Trusted_Connection=True;";
SampleConsoleDbContext scab = new SampleConsoleDbContext(connection);
Run Code Online (Sandbox Code Playgroud)
将连接字符串传递到上下文。
您可以根据需要对其进行抽象,但这就是将连接字符串传递给上下文实例的方式。
| 归档时间: |
|
| 查看次数: |
2971 次 |
| 最近记录: |