Я использую подход 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>();
}
}
спасибо за ваши быстрые ответы!