我正在制作一个简单的数据库结构的映射,但无法弄清楚出了什么问题。我在公司和用户之间建立了一对多的关系。一家公司可以有很多用户。在数据库结构中,它是一种非标识关系,用户端的companyID是可选的(在我的数据库和我的实体中)。
这是我的代码:
public class User
{
public int userID { get; set; }
public int? companyID { get; set; }
public virtual Company Company { get; set; }
}
public class Company
{
public int companyID { get; set; }
public virtual ICollection<User> Users { get; set; }
}
public class FreelauncherContext : DbContext
{
public IDbSet<User> Users { get; set; }
public DbSet<Role> Roles { get; set; }
public DbSet<Company> Companies { get; set; }
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Conventions.Remove<PluralizingTableNameConvention>();
/*************USERS**************/
modelBuilder.Entity<User>().HasKey(t => t.userID);
modelBuilder.Entity<User>().ToTable("user", "freelauncher");
modelBuilder.Entity<User>().Property(t => t.companyID).HasColumnName("company_id");
modelBuilder.Entity<User>().HasOptional(t => t.Company).WithMany(t => t.Users).HasForeignKey(t => t.companyID);
/*************COMPANY**************/
modelBuilder.Entity<Company>().HasKey(t => t.companyID);
modelBuilder.Entity<Company>().ToTable("company", "freelauncher");
}
由于我没有看到任何错误,我一直在搜索我的数据库中的错误,但我找不到任何错误......
有什么建议吗?
当我删除与关系相关的关系和id并执行插入时,没有错误并且插入已保存
答案 0 :(得分:3)
在实体User的companyID的可选int中,我将该行更改为==&gt;
public Nullable<int> companyID { get; set; }
我无法解释它有什么不同,但现在它完美无缺