2016-05-31 7 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); 

И все же, ее получили это неправильный путь вокруг ...Как установить принцип необязательного один к одному с помощью Fluent 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.

Для того, чтобы сделать это, удалите SaleId из Comment класса (помните - CommentId будет как PK и FK) и использовать следующую конфигурацию:

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

Вы оба правильно: я вручную удалил свой базу данных и проверили ответ. Спасибо, что научил меня чему-то новому. – bwyn

+0

Это имеет смысл. В настоящее время, когда я использую этот код построителя, он пытается сбросить столбец CommentId и продвигать SaleId на первичный ключ! –

+0

Я думаю, что мой дизайн базы данных SMELLY. –