У меня есть две модели в LINQ to SQL. Первый - это сотрудник, а второй - должность.
Есть данные позиции, которые я уже вставил в таблицу позиций. На эти данные будет ссылаться модель Employee.
Position {
int id, //auto increament
string name,
string description,
}
Employee {
int id,
string name,
Position position,
}
Логика, когда я хочу создать сотрудника:
- Я создаю EmployeCreate и присваиваю имя сотрудника и должность ID
- Найти позицию по Id, используя репозиторий позиций.
- Создать модель сотрудника. Присвойте основанную модель позиции из второго шага
- Вставьте сотрудника с помощью репозитория сотрудника и отправьте изменения
Я думаю, что мои шаги правильные, но Основанные позиции снова вставляются в базу данных, обычно они не вставляются, поскольку данные уже существуют в базе данных.
Мой сервис сниппетов выглядит следующим образом:
EmployeService {
//property and constructor
AddEmployee(EmployeeCreate command) {
var employee = EmployeeFactory.Create(command);
var possition = _positionRepository.GetById(command.possitionId);
using (var tx = new TransactionScope())
{
employee.Position = possition;
_employeeRepository.InsertOnSubmit(employee);
_employeeRepository.SubmitChanges();
tx.Complete();
}
}
}
EDIT
Я создаю универсальный репозиторий Linq. Сотрудник и должность расширяет общий репозиторий Linq.
public class LinqRepository<T> : IRepository<T>, IRepository where T : class
{
protected readonly DataContext _dataContext;
public LinqRepository(IDataContextProvider dataContextProvider)
{
_dataContext = dataContextProvider.DataContext;
}
}