Kov*_*xey 24 .net c# entity-framework entity-framework-4
对不起我的英语不好.
我正在使用Entity Framework 4.0(模型优先)编写我的项目.在项目开始时,我遇到了这个问题:我试图在数据库中插入填充的对象,但我得到一个例外:
"无法将值NULL插入列'CategoryId',表'ForumDB.dbo.Categories';列不允许空值.INSERT失败.语句已被终止."
Category usingCategory = new Category("Using Forums", "usingforums", 0);
using (Context)
{
Context.Categories.AddObject(usingCategory);
Context.SaveChanges();
}
Run Code Online (Sandbox Code Playgroud)
我检查了这个对象,我确信它已经填满了.
以防万一:
public Category(string name, string urlName, int index)
{
CategoryId = Guid.NewGuid();
Name = name;
UrlName = urlName;
CategoryIndex = index;
}
Run Code Online (Sandbox Code Playgroud)
请告诉我发生了什么事?谢谢你的帮助!
aki*_*ler 42
看看这个:/sf/answers/373686911/ -实体框架可能会假设你的CategoryID字段是一个标识,因此传递null到数据库期待它来填充它.
D.B*_*d 32
我今天碰到了这个,不得不从数据库中重新生成我的EF类.
在这之后,我发现EF添加了:
[DatabaseGenerated(DatabaseGeneratedOption.None)]
public int Id { get; set; }
Run Code Online (Sandbox Code Playgroud)
到这个"Id"字段,它曾经是SQL中的一个Identity列,但被更改为app-assigned.
我想如果你没有那个属性,EF实际上不会将ID发送到数据库("约定优于配置")
小智 6
尝试将其添加到您的模型类 .cs 文件中:
[Key]
[DatabaseGenerated(DatabaseGeneratedOption.None)]
public int CategoryId { get; set; }
Run Code Online (Sandbox Code Playgroud)
或者将您的列 CategoryId 更改为身份:
CategoryId int IDENTITY(1,1)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
38746 次 |
| 最近记录: |