Ste*_*hen 2 asp.net-mvc entity-framework-4 ef-code-first
我在现有数据库表上定义了一个ID列设置为[Key]的模型类.该表的字段定义为主键,int,not null.它不是和标识列.
在代码中创建新记录时,我在调用SaveChanges()方法之前在代码中设置ID列(到唯一值).
该方法返回错误:
无法将值NULL插入列'xxx_id',表'xxx.dbo.xxxxxx'; 列不允许空值.INSERT失败.该语句已终止.
似乎EF假定ID列是Identity列,因此不会将SQL调用中的ID传递给数据库.
有没有办法定义ID列来告诉EF它不是一个Identity列,并在SQL调用中传递该值
小智 9
您需要为该属性指定DatabaseGeneratedOption.在这种情况下,DatabaseGeneratedOption应为None.
请参阅:http://msdn.microsoft.com/en-us/library/system.componentmodel.dataannotations.databasegeneratedoption%28v=vs.103%29.aspx
我通常使用流畅的配置完成此操作,例如:
Property(p => p.Id).HasDatabaseGeneratedOption(DatabaseGeneratedOption.None);
Run Code Online (Sandbox Code Playgroud)
..但看起来这也可以用属性指定.请参阅http://msdn.microsoft.com/en-us/library/system.componentmodel.dataannotations.databasegeneratedoption%28v=vs.103%29.aspx
[DatabaseGenerated(DatabaseGeneratedOption.None)]
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2096 次 |
| 最近记录: |