Я работаю с SQL SERVER 2012, C#, .NET Framework 4.0 и Entity Framework Code First 6.1.3.Вставить значение в первичный ключ не идентичности
Я создал эту таблицу с SQL:
CREATE TABLE [dbo].[PRODUCTS]
(
[PRODUCT_ID] INT NOT NULL PRIMARY KEY,
[PRODUCT_CODE] NVARCHAR(20) NOT NULL,
[DESCRIPTION] NVARCHAR(50) NULL,
[LAW] TINYINT NOT NULL
)
Для доступа к нему с EF у меня есть этот класс:
public class PRODUCTS
{
public int PRODUCT_ID { get; set; }
public string PRODUCT_CODE { get; set; }
public string DESCRIPTION { get; set; }
public byte LAW { get; set; }
}
При такой конфигурации:
class PRODUCTSConfiguration : EntityTypeConfiguration<PRODUCTS>
{
public PRODUCTSConfiguration()
{
HasKey(p => p.PRODUCT_ID);
Property(p => p.PRODUCT_CODE)
.HasMaxLength(20)
.IsRequired();
Property(p => p.DESCRIPTION)
.HasMaxLength(50)
.IsOptional();
Property(p => p.LAW)
.IsRequired();
}
}
Но когда я попробуйте вставить новую строку в эту таблицу, используя Entity Framework. Я получаю исключение в dbContext.SaveChanges();
, говоря: что PRODUCT_ID
не может быть пустым:
Вы не можете вставить значение NULL в столбце «PRODUCT_ID», ИЗДЕЛИЯ стол. Столбец не допускает значения NULL. Ошибка INSERT.Se инструкция.
вставить новый продукт, который я это сделать:
PRODUCTS dataProduct = new PRODUCTS()
{
PRODUCT_ID = product.Id,
PRODUCT_CODE = product.ProductCode,
LAW = product.Law,
DESCRIPTION = product.Description
};
dbContext.Add(dataProduct);
dbContext.SaveChanges();
Но я отлажена и PRODUCT_ID
имеет значение.
Нужно ли мне что-то делать, чтобы вставить это значение на столбец PRODUCT_ID
?
Кстати, мне нужно вставить значение в столбец PRODUCT_ID
, я не могу использовать IDENTITY.
Извините, но это не ответит на мой вопрос. Я спрашиваю, почему, если я установил значение в 'PRODUCT_ID' EF, выведите исключение, указав, что значение столбца равно NULL. – VansFannel