tôi vật lộn với tất cả các câu trả lời ở trên là các bit EF liên tục thay đổi, vì vậy mã sẽ không biên dịch. Tính đến hôm nay (19Feb2016) với EF7.0.0-rc1 kết (Prerelease) và SQLite, đây là những gì làm việc cho tôi:
Từ các tài liệu EF7:
using System;
using System.IO;
using Microsoft.Extensions.Logging;
namespace EFLogging
{
public class EFLoggerProvider : ILoggerProvider
{
public ILogger CreateLogger(string categoryName)
{
return new EFLogger();
}
public void Dispose()
{
// N/A
}
private class EFLogger : ILogger
{
public IDisposable BeginScopeImpl(object state)
{
return null;
}
public bool IsEnabled(LogLevel logLevel)
{
return true;
}
public void Log(LogLevel logLevel, int eventId, object state, Exception exception, Func<object, Exception, string> formatter)
{
File.AppendAllText(@".\EF.LOG", formatter(state, exception));
Console.WriteLine(formatter(state, exception));
}
}
}
}
Sử dụng một số ý tưởng trên và EF7 Documents:
using System;
using Microsoft.Data.Entity;
using Microsoft.Data.Entity.Infrastructure;
using Microsoft.Extensions.DependencyInjection; // Add this to EF7 docs code
using Microsoft.Extensions.Logging;
namespace DataAccessLayer
{
public static class DbContextExtensions
{
public static void LogToConsole(this DbContext context)
{
var serviceProvider = context.GetInfrastructure<IServiceProvider>();
var loggerFactory = serviceProvider.GetService<ILoggerFactory>();
loggerFactory.AddProvider(new EFLoggerProvider(logLevel));
}
}
}
EDIT : @ jnm2 chỉ ra nếu bạn thêm "bằng cách sử dụng Microsoft.Extensions.DependencyInjection", các tài liệu EF7 là chính xác. Cảm ơn!
Và cuối cùng, trong phương pháp App.OnStartup tôi:
using (var db = new MyDbContext())
{
db.LogToConsole();
}
Mã này sẽ tạo ra một tập tin đăng nhập và thông tin đăng nhập cũng ra đến cửa sổ trực quan ra Studio. Tôi hy vọng điều này sẽ giúp - Tôi chắc chắn trong một vài tuần, các bit sẽ thay đổi một lần nữa.
Tôi tự hỏi nếu có một cách để đăng nhập chỉ là các truy vấn EF mà không cần mọi thứ khác. –
@MahmoudAli Tài liệu EF Core cho biết cách lọc trên một số danh mục nhật ký nhất định: https://docs.microsoft.com/en-us/ef/core/miscellaneous/logging –