Должно ли хранилище вызывать другое хранилище? Или хранилище должно вызывать сервисный уровень?

Я пытаюсь понять, как решить эту проблему. Я должен вставить некоторые данные в 2 таблицы, назовем их Таблица A и Таблица B.

Table A has these columns
AId
A1 
A2
A3

Table B has
AId
A1
B2
B3
B4

Теперь мой первый вопрос: должен ли другой репозиторий вызывать другой репозиторий? Я неНе думаю, что это решит мою текущую проблему, но я просто хочу знать это для дальнейшего использования?

Теперь о моей проблеме.

когда я вызываю create в моем слое хранилища (TableARepository) для Create Table A. Я сразу же создаю поля для tableB.

// linq to sql.
    TableA myATable = new TableA();
    dbContext.myATable.A1 = "hi";  // all these values would come from parameters.
    dbContext.myATable.A2 = "bye";
    dbContext.myATable.A3 = "go";

    dbContext.myATable.insertOnSubmit(TableA);
    dbContext.SubmitChanges();

    TableB myBTable = new TableB();
    dbContext.myBTable.AId = myATable.AId;
    dbContext.myBTable.A1 = myATable.A1;
    dbContext.myBTable.B2 = "2";
    dbContext.myBTable.B3 = "3";
    dbContext.myBTable.B4 = "4";

    dbContext.myATable.insertOnSubmit(TableB);
    dbContext.SubmitChanges();

Так что я думаю, что это нормально, и я неНе думаю, что мне нужно будет вызывать хранилище myBTable (для создания tableB) для этого или сервисного уровня.

Теперь вот проблема. Таблица TableB должна иметь информацию, вставленную в эту таблицу только в том случае, если она не равна "Привет".

so param1 != "hi"  // insert 
   param1 == "hi"  // ignore and only insert table A

так что это будет означать, что мне придется обернуть мой TableB, как это

if(param1 != "hi")
{
   TableB myBTable = new TableB();
    dbContext.myBTable.AId = myATable.AId;
    dbContext.myBTable.A1 = myATable.A1;
    dbContext.myBTable.B2 = "2";
    dbContext.myBTable.B3 = "3";
    dbContext.myBTable.B4 = "4";

    dbContext.myATable.insertOnSubmit(TableB);
    dbContext.SubmitChanges();
}

Теперь я не уверен, стоит ли мне делать это здесь, так как это выглядит почти как бизнес-логика. но в то же время я не уверен, как сделать эту бизнес-логику, так как в любом случае мне все еще нужно передать значение, чтобы вставить его в метод create, даже если он имеет значение null (A1 - обнуляемое поле).

Поэтому я должен вызвать сервисный уровень tableB, передать TableA.Id, A1 и проверить, что такое A1. Если хорошо, то перейдите в хранилище TableB и вставьте его таким образом?

Итак, TableARepostiory -> Уровень сервиса TableB -> TableBRepository (если найдено, что это значение! = "Привет").

Поэтому я не уверен, что делать.

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

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