обрабатывать действие вставки сущностей, используя базовый класс в EF code-first - PullRequest
0 голосов
/ 23 октября 2019

Я использую подход Entity Framework Code-First и использую базовый класс для обработки вставки и обновления действий всех моих сущностей с помощью метода Save (). У меня есть код, подобный этому:

public class BaseClass
{
    public int Id { get; set; }
    public void save()
    {
        using (DataConnection connection = new DataConnection("Server=.;Database=HD;Trusted_Connection=true"))
        {
            string Text = "Insert [" + this.GetType().Name + "] select";
            foreach (var item in this.GetType().GetProperties())
            {
                if (item.Name != "Id")
                {
                    Text += "'" + item.GetValue(this) + "',";
                }
            }
            Text = Text.TrimEnd(',');
            connection.Command.CommandText = Text;
            connection.ExecuteNonQuery();
        }
    }
}

, но я получаю эту ошибку:

Явное значение для столбца идентификаторов в таблице «Ветвь» можно указывать только в том случае, еслииспользуется список столбцов, и IDENTITY_INSERT включен.

Я отладил и обнаружил, что этот класс создает строку команды, подобную этой:

Insert [Branch] select'85001','System.Collections.Generic.List`1[HD.DataModel.Entities.Request]','System.Collections.Generic.List`1[HD.DataModel.Entities.Technician]'

, так как моя сущность "Branch" закодирована какэто:

public class Branch:BaseClass
{
    public string Title { get; set; }
    public virtual ICollection<Request> Requests { get; set; }
    public virtual ICollection<Technician> Technicians { get; set; }
    public Branch()
    {
        Requests = new List<Request>();

        Technicians = new List<Technician>();
    }
}

спасибо за ваши быстрые ответы!

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