Отображение классов из пакетов с косвенными ссылками в .NET Core

Я пытаюсь реализовать базовый шаблон UoW / Repository с помощью ASP.NET/Entity Framework Core, и я столкнулся с очень тревожным поведением.

Мое решение состоит из 4 проектов в общей сложности.

.DAL проектгде определены мои классы сущностей и где определен мой DbContext:

public class Product
{
    public int Id { get; set; }

    public string Name { get; set; }
}

public class ApplicationDbContext : DbContext
{
    public DbSet<Product> Products { get; set; }
}

.Фасад проект, в котором определены мои IUnitOfWork и IProductRepository:

public interface IUnitOfWork
{
    IProductRepository Products { get; }
}

public interface IProductRepository
{
    string GetName(int id);
}

.Facade.EF проект, где мой Фасад реализован с EF:

public class UnitOfWork : IUnitOfWork
{
    private ApplicationDbContext _context;
    public IProductRepository Products { get; private set; }

    internal ApplicationDbContext Context { get { return _context; } }

    public UnitOfWork()
    {
        _context = new ApplicationDbContext();
        Products = new ProductRepository(this);
    }
}

public class ProductRepository : IProductRepository
{
    private ApplicationDbContext _context;
    public ProductRepository(UnitOfWork uow)
    {
        _context = uow.Context;
    }
    public string GetName(int id)
    {
        return _context.Products
            .Where(x => x.Id == id)
            .Select(x => x.Name)
            .FirstOrDefault();
    }
}

.DemoApp проект, где мой код приложения должен быть. Этот проект должен знать только о UnitOfWork и UserRepository, а не о классе ApplicationDbContext.

Ссылки .DAL Entity Framework 6.1.3.

.Факад не ссылается ни на что.

.Facade.EF ссылается на проект .DAL, проект .Facade и Entity Framework 6.1.3.

.DemoApp ссылается на Facade и Facade.EF, но НЕ на Entity Framework 6.1.3. Проект NOR .DAL. Несмотря на то, что сборки EF добавляются в мою папку bin при сборке, этот проект не имеет прямой ссылки на EF.

С.NET Framework 4.6.x., если я пытаюсь выполнить код для ApplicationDbContext в DemoApp, он говорит мне, что класс не определен, и не предоставляет никаких добавлений, что является ожидаемым поведением.

Если я попытаюсь сделать то же самое с.NET Core 1.0 RC2 (используя Entity Framework Core), ApplicationDbContext доступен из .DemoApp без добавления прямой ссылки на проект .DAL, что полностью разрушает мою попытку скрыть детали реализации.

На проект .DAL напрямую не ссылается проект .DemoApp - почему я могу видеть классы из него?

Это ожидаемое поведение? Есть ли способ заставить проекты .NET Core вести себя так же, как и проекты .NET Framework 4.6.x?

Ответы на вопрос(1)

Ваш ответ на вопрос