Tec*_*her 6 c# entity-framework code-first winforms
public class Movie
{
public int Id { get; set; }
[Required]
[StringLength(255)]
public string Name { get; set; }
public virtual IList<Genre> Genre { get; set; }
public virtual IList<Cast> cast { get; set; }
[Display(Name = "Release Date")]
public DateTime ReleaseDate { get; set; }
}
public class Genre
{
public int Id { get; set; }
[Required]
[StringLength(255)]
public String Name { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
这是我的 2 个模型。它们工作得很好,除了主键上没有实现自动增量之外。
我收到 id 为空的错误,并且无法插入数据库,这对我来说似乎是逻辑的。任何想法为什么没有任何自动增量,其次我如何添加它们?我在 .NET Framework 4.6 中使用代码优先迁移,它是一个 Winforms 应用程序。
您必须在 ID 列上添加以下两个属性
\n\n[Key]\n[DatabaseGenerated(DatabaseGeneratedOption.Identity)]\npublic int Id { get; set; }\nRun Code Online (Sandbox Code Playgroud)\n\n根据这个博客:
\n\n\n\n\n如果您忘记提及 [Key] ,假设您已使其不为空,并在 C# 代码中显式地说 > Id ,则 EF 将尝试传递 NULL 因为\n 它是一个身份,并会抛出异常 \xe2\x80\x9c Cannot将值\n NULL 插入列\xe2\x80\xa6\xe2\x80\xa6\xe2\x80\xa6。\xe2\x80\x9c,因此只需修改\n DatabaseGenerateOption.Identity 为 DatabaseGenerateOption.None \xe2\x80\x93\n 可能无法满足自动增量需求。因此,只需保留 [Key]\n 并让 DB 生成器为您填充它即可。这就是涉及并发时的方法。
\n
我希望这能回答您的疑问。
\n| 归档时间: |
|
| 查看次数: |
15581 次 |
| 最近记录: |