Не удалось сохранить изменения с EF DbContext - PullRequest
1 голос
/ 14 января 2012

Я изучаю EF Code First из "Programming Entity Framework Code First". Следующие фрагменты кода копируются со страницы 5 на страницу 7.

Visit.cs

using System;

namespace ChapterOne
{
    class Visit
    {
        public int Id { get; set; }
        public DateTime Date { get; set; }
        public String ReasonForVisit { get; set; }
        public String Outcome { get; set; }
        public Decimal Weight { get; set; }
        public int PatientId { get; set; }
    }
}

AnimalType.cs

namespace ChapterOne
{
    class AnimalType
    {
        public int Id { get; set; }
        public string TypeName { get; set; }
    }
}

Patient.cs

using System;
using System.Collections.Generic;

namespace ChapterOne
{
    class Patient
    {
        public Patient()
        {
            Visits = new List<Visit>();
        }
        public int Id { get; set; }
        public string Name { get; set; }
        public DateTime BirthDate { get; set; }
        public AnimalType AnimalType { get; set; }
        public DateTime FirstVisit { get; set; }
        public List<Visit> Visits { get; set; }
    }
}

VetContext.cs

using System.Data.Entity;

namespace ChapterOne
{
    class VetContext : DbContext
    {
        public DbSet<Patient> Patients { get; set; }
        public DbSet<Visit> Visits { get; set; }
    }
}

Program.cs

using System;
using System.Collections.Generic;

namespace ChapterOne
{
    class Program
    {
        static void Main(string[] args)
        {
            var dog = new AnimalType { TypeName = "Dog" };

            var patient = new Patient
            {
                Name = "Simpson",
                BirthDate = new DateTime(2008, 1, 28),
                AnimalType = dog,
                Visits = new List<Visit> 
                { 
                    new Visit 
                    { 
                        Date = new DateTime(2011, 9, 1)
                    }
                }

            };

            using (var context = new VetContext())
            {
                context.Patients.Add(patient);
                context.SaveChanges();
            }
        }
    }
}

К сожалению, я получил следующую ошибку. Не могли бы вы сказать мне, что не так?

enter image description here

Ответы [ 2 ]

2 голосов
/ 14 января 2012

Возможно, вы не заполняете все необходимые поля.Я заметил, что Patient.FirstVisit значение по умолчанию недопустимо для сервера sql.

1 голос
/ 14 января 2012

Не уверен, является ли это причиной вашей точной ошибки, но, вероятно, также приведет к другой ошибке; Ваш VetContext должен содержать еще 1 строку:

public DbSet<AnimalType> AnimalTypes { get; set; }

В противном случае EF не создаст таблицу AnimalType в БД для вставки

var dog = new AnimalType { TypeName = "Dog" };

запись в.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...