2012-02-10 12 views
1

私はこの問題を持っている:エンティティフレームワークの問題

は、1対1の関係を持つ2つのentytiesを持って、それらのブーツは、同じID列名を持つ

 
    Document_head    sales_Order 
+-----------------+   +------------------+ 
+ DocumentId  +   + DocumentId  + 
+ Person   + 1-----1 + OrderDate  + 
+ Status   +   + Purchaser  + 
+ ...    +   + ...    + 
+ ----------------+   +------------------+ 

をここでエンティティ定義は

public partial class Document_head 
{ 

    public Document_head() 
    { 
     // Other 
    } 
    [Key] 
    public string DocumentId {get;set;} 
    public int PersonId {get;set;} 
    public int status {get;set;} 

    [ForeignKey("DocumentId")] 
    public virtual sales_Order sales_Order { get; set; } 
} 


public partial class sales_order 
{ 
    public sales_order() 
    { 
     //Other 
    } 
    [Key] 
    public string DocumentId { get; set; } 

    public virtual Document_head Document_head { get; set; } 
} 
です

ここに文脈はあります

public class MyContext : DbContext 
{ 
    public DbSet Document_head Document_head{ get; set; } 
    public DbSet<sales_order> sales_order{ get; set; } 

    modelBuilder.Entity<Document_head>() 
     .HasOptional(p => p.sales_order).WithRequired(); 
    modelBuilder.Entity<sales_order>() 
     .HasRequired(p => p.Document_head).WithOptional(); 
} 

問題は、MVC3アプリケーションを実行するときです。それは言う

列名 "Document_Head_DocumentIdは、" 有効ではありません。

私はこの状況で多くの時間を費やしています。もし誰かがこれを手伝ってくれれば非常に感謝します。

答えて

2

次のように構成を変更します。構成ラインは1つだけで済み、両方のナビゲーションフィールドを含める必要があります。

public class MyContext : DbContext 
{ 
    public DbSet Document_head Document_head{ get; set; } 
    public DbSet sales_order{ get; set; } 

    modelBuilder.Entity‹sales_order›().HasRequired(p => p.Document_head) 
     .WithOptional(p => p.sales_order); 
} 
+0

+1データアノテーションよりも流暢なAPIを使用することを強くお勧めします。 – Oybek

+0

あなたの素早い答えのための非常にtks .....私は変更を行いました..しかし、問題が続く...なぜ:public DbSet sales_order {get;セット; }代わりにpublic DbSet <sales_order> sales_order {get;セット; } –

+0

@JuanPabloGomezコメントに何を付けているのかはっきりしません。あなたの質問を更新できますか? – Eranga

関連する問題