Как сохранить дату из текстового поля в базу данных, используя Entity Framework? - PullRequest
0 голосов
/ 06 января 2020

dtpGraduationYear - это TextBox, который содержит дату. Я хочу сохранить дату из textbox в базу данных, используя Entity Framework.

private void btnSaveAll_Click(object sender, EventArgs e)
{
    //
    // tab Education
    //         
    var Education = new database.tblEmployeeQualification
    {
        EmployeeCode = Convert.ToInt32(txtCode.Text),
        UniversitiyCode = string.IsNullOrEmpty(txtEdUniversitiesNo.Text) ? (byte?)null : Convert.ToByte(txtEdUniversitiesNo.Text), 
        FauculityCode = string.IsNullOrEmpty(txtEdFacultyNo.Text) ? (byte?)null : Convert.ToByte(txtEdFacultyNo.Text), 
        QualificationsCode = string.IsNullOrEmpty(txtEdQualificationNo.Text) ? (byte?)null : Convert.ToByte(txtEdQualificationNo.Text), 
        SpecializationCode = string.IsNullOrEmpty(txtEdSpecializationNo.Text) ? (byte?)null : Convert.ToByte(txtEdSpecializationNo.Text), 
        EductionGrade = string.IsNullOrEmpty(txtEdGradeNo.Text) ? (byte?)null : Convert.ToByte(txtEdGradeNo.Text), 
        QualificationsTypeCode = string.IsNullOrEmpty(txtQualificationTypeNo.Text) ? (byte?)null : Convert.ToByte(txtQualificationTypeNo.Text), 
        GraduationYear = dtpGraduationYear.ToString("dd/MM/yyyy"),
        Note = txtEdNote.Text,
    };

    db.tblEmployeeQualifications.AddOrUpdate(Education);
    db.SaveChanges();
}

Ошибка здесь GraduationYear = dtpGraduationYear.ToString("dd/MM/yyyy"), Ошибка:

нет перегрузки для метода 'tostring' принимает 1 аргумент

Это мой модельный класс:

public partial class tblEmployeeQualification
{
    public int EmployeeCode { get; set; }
    public Nullable<short> UniversitiyCode { get; set; }
    public Nullable<short> FauculityCode { get; set; }
    public Nullable<short> QualificationsCode { get; set; }
    public Nullable<short> SpecializationCode { get; set; }
    public Nullable<byte> EductionGrade { get; set; }
    public Nullable<byte> QualificationsTypeCode { get; set; }
    public Nullable<byte> MainEducationCode { get; set; }
    public Nullable<System.DateTime> GraduationYear { get; set; }
    public string Note { get; set; }

    public virtual tblEmployeeData tblEmployeeData { get; set; }
    public virtual tblEnglishLevel tblEnglishLevel { get; set; }
    public virtual tblFaculty tblFaculty { get; set; }
    public virtual tblMainEduaction tblMainEduaction { get; set; }
    public virtual tblQualification tblQualification { get; set; }
    public virtual tblQualificationType tblQualificationType { get; set; }
    public virtual tblSpecialization tblSpecialization { get; set; }
    public virtual tblUniversity tblUniversity { get; set; }
}

Ответы [ 2 ]

0 голосов
/ 06 января 2020

Строка с ошибкой, которую вы сказали, здесь:

GraduationYear = dtpGraduationYear.ToString("dd/MM/yyyy")

dtpGraduationYear вы сказали, что это TextBox. Как и во всех других текстовых полях, вам нужно прочитать свойство Text. Как говорит ошибка:

нет перегрузки для метода 'tostring', принимает 1 аргумент

То есть TextBox имеет метод ToString(), но не требует аргументы.

Это только половина ответа, хотя ваша модель ожидает, что GraduationDate будет Nullable<DateTime> - вам нужно будет преобразовать текст в этот тип, вероятно, используя DateTime.Parse или DateTime.TryParse.

0 голосов
/ 06 января 2020

Вы можете использовать:

GraduationYear = Convert.ToDateTime(dtpGraduationYear.Text.ToString());
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...