У нас есть база данных с таблицами под названием «Сайты». В этой таблице есть столбцы: SiteID, Имя, Теги, Описание, URI, первичным ключом является SiteID (Он не задан как Identity, потому что мы хотим добавить нашсобственный идентификатор)
Мы использовали .NET 4.0 MVC с C # и настроили все в коде, который нам нужен.Мы можем выбирать вещи из базы данных и отображать их, чтобы мы знали, что это работает.Но когда мы пытаемся вставить, мы получаем ошибку Cannot insert the value NULL into column 'SiteID'
.
Если я установлю столбец как Identity, чтобы он автоматически генерировался, или если я удалю первичный ключ, тогда все в порядке, но как ясказал, что это должен быть первичный ключ, и мы хотим вставить собственные идентификаторы.
Мой код указан ниже (Мы получаем ошибку на SaveChanges()
, но проверили в отладчике, и SiteID определенно присваивается int)
Сайты
public class Sites
{
[Key]
public int SiteID { get; set; }
public string Name { get; set; }
public string Tags { get; set; }
public string Description { get; set; }
public string URI { get; set; }
}
CMSModels
public class CMSModels : DbContext
{
//public DbSet<ContentTypeModel> ContentType { get; set; }
//public DbSet<LayoutModel> Layout { get; set; }
//public DbSet<PageModel> Page { get; set; }
//public DbSet<PageZoneModel> PageZone { get; set; }
public DbSet<Sites> Site { get; set; }
//public DbSet<ZoneContentModel> ZoneContent { get; set; }
//public DbSet<ZoneTypeModel> ZoneType { get; set; }
}
HomeController:
private CMSModels models = new CMSModels();
public ActionResult Index()
{
Sites site = new Sites { SiteID = 4, Name = "Name", Description = "Desc", Tags = "", URI = "" };
models.Site.Add(site);
models.SaveChanges();
return View(models.Site.ToList());
}
Я не понимаю, почему я получаю эту ошибку, поэтому любые идеи будут оценены.
Если вам нужен какой-либо другой код, пожалуйста, дайте мне знать.
Edit:
Просто, чтобы немного расширить этот вопрос, кажется, что это происходит только с первичными ключами типа int.
Если мы установим данные столбца базы данныхвведите nvarchar и типы данных в коде, чтобы строка работала нормально.
Это просто ошибка в Entity Framework 4,или мы просто делаем что-то не так?
Если мы не можем найти способ вставить целые числа в столбец первичного ключа, мы можем просто использовать вместо них строки и проверить их, чтобы убедиться, что они числовые.