как сделать бизнес-слой работающим с разными моделями? - PullRequest
1 голос
/ 14 апреля 2019

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

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

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

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

    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
    {
    ...
    }

Теперь в моем случае, скажем, две разные модели. Помимо ранее написанных классов 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; }
    }

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

...