2015-10-28 15 views
5

Vấn đềLàm thế nào để sử dụng EF7 và kết nối với SQL Server mà không cần startup.cs trong ứng dụng giao diện điều khiển ASP.NET 5 Beta 8?

Tôi đang viết ứng dụng mẫu bảng điều khiển asp.net 5 và tôi muốn sử dụng Entity Framework 7 để nói chuyện với chương trình phụ trợ của tôi. Tôi biết làm thế nào để làm điều này trong một ứng dụng web, nhưng tôi bị mất vì làm thế nào để thực hiện điều này cho một ứng dụng giao diện điều khiển khi không sử dụng startup.cs nhưng main.cs.

Trong một ứng dụng web, bạn sẽ có đoạn mã sau vào 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)); 
} 

Ở đây bạn có các dịch vụ được cấu hình cho entityframework7 và chuỗi kết nối được sử dụng SQL Server.

Cố gắng

tôi đã xem xét trên GitHub, Google, và Bing nhưng chỉ tìm thấy dự án mẫu và mã cho ứng dụng web với EF7. Tôi chưa tìm thấy tài liệu thảo luận về EF7 với ứng dụng bảng điều khiển.

Tôi muốn viết mã trên, nhưng có nó trong số main.cs cho ứng dụng bảng điều khiển của tôi. Tôi đã không có thành công, rõ ràng là những điều sau đây main.cs:

SampleConsoleDbContext scab = new SampleConsoleDbContext(); 

tôi không có cách nào nói chương trình của tôi những gì các chuỗi kết nối và tôi vẫn còn có nghi ngờ này nó đúng cách để có được bối cảnh thuyết minh trong main.cs.

Tôi sẽ đánh giá cao mọi hỗ trợ, lời khuyên hoặc nhận xét về vấn đề thú vị này. Cảm ơn bạn.

Trả lời

2

heavyd cho biết hầu hết điều đó là không cần thiết và chỉ dành cho thiết lập DI, đó cũng là cách tôi đọc mã, có thể sai.

Đối với thiết lập các chuỗi kết nối bạn có thể làm đơn giản:

var connection = @"Server=(localdb)\mssqllocaldb;Database=EFGetStarted.AspNet5;Trusted_Connection=True;"; 

SampleConsoleDbContext scab = new SampleConsoleDbContext(connection); 

vượt qua chuỗi kết nối với bối cảnh.

bạn có thể trừu tượng điều này bao nhiêu tùy thích, nhưng đây là cách bạn sẽ chuyển chuỗi kết nối đến thể hiện của ngữ cảnh.

+0

này trả lời trường hợp sử dụng cụ thể của tôi và tôi đã bỏ phiếu nó như là câu trả lời cho nó phù hợp với mã được tìm thấy trong các liên kết EF7 tôi đã đề cập to heavyd. Tôi nghĩ cả hai đều dành thời gian và giúp đỡ của bạn. Thật tuyệt khi thấy rằng tài liệu ef7 mới, ngay cả khi nó vẫn còn hơi thô. :) – hlyates

7

Microsoft đã thực sự bắt đầu để xây dựng documentation cho Entity Framework 7.

Từ mẫu của họ, bạn chỉ có thể thực hiện cấu hình của bối cảnh nội tuyến bằng cách ghi đè các phương pháp 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>"); 
    } 
} 

Và sau đó bạn có thể chỉ cần tạo các trường hợp ngữ cảnh của bạn trong Chính:

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); 
      } 
     } 
    } 
} 

Trong ví dụ ASP.NET, các cuộc gọi đến .AddEntityFramework() là để cho phép EF sử dụng cùng một nhà cung cấp dịch vụ (nghĩ phụ thuộc tiêm) như phần còn lại của ASP.NET (điều này có nghĩa là EF sẽ nhận được cùng một logger vv mà ASP.NET đang sử dụng). Nhưng nếu bạn không muốn làm theo mô hình đó thì bạn chỉ có thể sử dụng cách tiếp cận được hiển thị ở trên.

+1

Cảm ơn bạn đã trả lời. Đó là một liên kết mới mà tôi không biết và tôi đã bình chọn câu trả lời của bạn. Tôi tìm thấy mã cụ thể bản thân mình đêm qua tại địa điểm này là tốt: https://github.com/aspnet/EntityFramework/wiki/Configuring-a-DbContext – hlyates

+0

UseSqlServer không phải là avaiable, cần phải thêm một hội đồng cụ thể? –

+0

@ Kris-I 'sử dụng Microsoft.EntityFrameworkCore;' từ gói 'Microsoft.EntityFrameworkCore.SqlServer' [Xem tại đây] (http://stackoverflow.com/a/39275251/94928) và [docs] (https: // docs.microsoft.com/en-us/ef/core/api/microsoft.entityframeworkcore.sqlserverdbcontextoptionsextensions#Microsoft_EntityFrameworkCore_SqlServerDbContextOptionsExtensions_UseSqlServer_Microsoft_EntityFrameworkCore_DbContextOptionsBuilder_System_String_System_Action_Microsoft_EntityFrameworkCore_Infrastructure_SqlServerDbContextOptionsBuilder__) – heavyd

Các vấn đề liên quan