我正在使用MVC和以下学习EF video 他们说那句话:
public ICollection<Chirp> Chirps { get; set; }
添加了两个模型之间的关系,但是在重新生成没有这一行的表之后查看表列和键时,到目前为止我看不出任何差异。我遗漏了一些东西,因为所有的教程都提到了这种关系。
public class User
{
public int Id { get; set; }
public String Name { get; set; }
public ICollection<Chirp> Chirps { get; set; }
}
public class Chirp
{
public int Id { get; set; }
public string Message { get; set; }
public User User { get; set; }
}
public class MyContext : DbContext
{
public DbSet<Chirp> Chirps { get; set; }
public DbSet<User> Users { get; set; }
}
换句话说,公共ICollection Chirps {get;组;告诉EF用db结构做什么? 谢谢!
答案 0 :(得分:0)
这应该生成一个跟踪User to Chirps关系的附加表。在数据库中查找应包含两列User_Chirps
和UserChirps
的{{1}}或User_Id
表格。另外,我刚注意到你的id属性使用Chirp_Id
的小写i。我相信实体框架中的约定期望属性名称为id
,大写为I.所以您可能也想尝试更改它。
答案 1 :(得分:0)
似乎差异是Chirps表的约束。没有公共ICollection Chirps {get;组; } 其:
ALTER TABLE [dbo].[Chirps] WITH CHECK ADD CONSTRAINT **[Chirp_User]** FOREIGN KEY([User_id])
REFERENCES [dbo].[Users] ([id])
与它同时:
ALTER TABLE [dbo].[Chirps] WITH CHECK ADD CONSTRAINT **[User_Chirps]** FOREIGN KEY([User_id])
REFERENCES [dbo].[Users] ([id]