У меня есть пара моделей: User и ShiftWork:
public class User
{
public long Id { get; set; }
public string Username { get; set; }
public string SSO { get; set; }
public ShiftWork ShiftWork { get; set; }
}
public class ShiftWork
{
public long Id { get; set; }
public string ShiftName { get; set; }
}
У меня также есть классы для выбора и вставки данных.Мне удалось найти решения для всего, что я хотел сделать до сих пор, но я не могу выполнить вставку в Пользователя, которую я пытаюсь сделать.
Я хочу иметь возможность вставить ShiftWorkId
в таблицу User, но мне нужно получить идентификатор из ShiftName
, который находится в текстовом поле Winform.
Пока мои усилия в основном выглядят так:
public void CreateUser(User user)
{
using (IDbConnection cnn = SimpleDBConnection())
{
string sql = "INSERT INTO USER (Username, SSO, ShiftWorkId) Values (@Username, @SSO, (select @Id from ShiftWork Where ShiftName in (select ShiftName from ShiftWork)))";
cnn.Execute(sql, new { user.Username, user.SSO, user.ShiftWork.Id });
}
}
Я также пытался:
string sql = "INSERT INTO USER (Username, SSO, ShiftWorkId) Values (@Username, @SSO, (select @Id from ShiftWork Where ShiftName = @ShiftName))";
Однако я не могу понять, как мне добавить параметры для ShiftName.
В текстовом поле есть пользовательский источник автозаполнения, который заполняется избаза данных:
public List<ShiftWork> GetShifts()
{
using (IDbConnection cnn = SimpleDBConnection())
{
string sql = "SELECT * FROM ShiftWork";
var output = cnn.Query<ShiftWork>(sql);
return output.ToList();
}
}
, которая в приведенном ниже коде выглядит следующим образом:
AutoCompleteStringCollection ac = new AutoCompleteStringCollection();
foreach (var s in _shiftWorkRepository.GetShifts())
{
ac.Add(s.ShiftName);
}
tbShift.AutoCompleteMode = AutoCompleteMode.SuggestAppend;
tbShift.AutoCompleteSource = AutoCompleteSource.CustomSource;
tbShift.AutoCompleteCustomSource = ac;
Пока все, что я пробовал в отношении присвоения текста из текстового поля для user.shiftworkId,давая мне ошибки.Вся помощь очень ценится