2016-05-31 54 views
1
public class Sale 
{ 
    public int SaleId { get; set; } 
    public Comment Comment { get; set; } 
} 

public class Comment 
{ 
    public int CommentId { get; set; } 
    public int SaleId { get; set; } 

    public Sale Sale { get; set; } 
} 

modelBuilder.Entity<Comment>() 
    .HasRequired(s => s.Sale) 
    .WithMany() 
    .HasForeignKey(s => s.SaleId); 

然而,它有它周围的错误的方式...如何设置的原则,为可选一到一个用流利的API

public override void Up() 
{ 
    AddColumn("public.tbl_sale", "Comment_CommentId", c => c.Long()); 
    AddForeignKey("public.tbl_sale", "Comment_CommentId", "public.tbl_comment", "CommentId"); 
} 

如何解决?

回答

0

在EF中建模这种关系的标准方法是使用Shared Primary Key Association

为了做到这一点,从取出SaleIdComment类(记住 - 在CommentId将是既PK和FK),并使用以下配置:

modelBuilder.Entity<Comment>() 
    .HasRequired(c => c.Sale) 
    .WithOptional(s => s.Comment); 
+0

你们都是正确的:我手动删除了我数据库并检查了答案。谢谢你教我新东西。 – bwyn

+0

这很有道理。目前,当我使用该构建器代码时,它会尝试删除CommentId列并将SaleId提升为主键! –

+0

我认为我的数据库设计是SMELLY。 –

相关问题