我正在使用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值插入 'PRODUCTS'表中的“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 会抛出一个异常,说该列的值为空。 - VansFannel