как заставить бизнес-уровень работать с разными моделями?

#c# #model-view-controller #interface #n-tier-architecture

#c# #модель-представление-контроллер #интерфейс #n-tier-архитектура

Вопрос:

Я разрабатываю архитектуру a .Чистый проект на C #. Я буду использовать EF. Я хочу установить архитектуру шаблонов MVC. Хотя я начну с первой реализации модели, мне, возможно, придется использовать другие модели, которые будут ОЧЕНЬ похожи на исходную.

Я, очевидно, хочу реализовать единый бизнес-уровень, который в идеале работал бы с обеими реализациями модели.

Поэтому я полагаю, что в какой-то момент мне придется интенсивно полагаться на интерфейсы.

ОБЫЧНО я создаю свои сущности и контекст таким образом:

     public class Foo
    {
     public int Id { get; set; }
     public string Name { get; set; }
... other properties
    }

    public class Bar
    {
     public int Id { get; set; }
     public string Name { get; set; }
    public virtual  Foo Fooo { get; set; }
... other properties
    }
    ...
    public class MyContext : DbContext
    {
    ...
    }
 

Теперь, в моем случае, у меня будет, скажем, 2 разные модели.
Поверх ранее написанных классов Foo и Bar у меня будет:

  public class Foo2
    {
     public int Id { get; set; }
     public string Name { get; set; }
... other properties
    }

    public class Bar2
    {
     public int Id { get; set; }
     public string Name { get; set; }
    public virtual Foo Fooo { get; set; }
... other properties
    }
    ...
    public class MyContext2 : DbContext
    {
    ...
    }
 

Теперь как установить единый бизнес-уровень, который может иметь дело либо с MyContext, либо с MyContext2 ?

Я полагаю, что первым шагом является создание интерфейсов для For Foo / Foo2 и Bar / Bar2:

 public interface IFoo
    {
     int Id { get; set; }
     string Name { get; set; }
    }

    public interface IBar
    {
     int Id { get; set; }
     string Name { get; set; }
     IFoo Fooo { get; set; }
    }
 

Тогда что????