2012-07-11 61 views
0

所以IAM新的代碼firt和我有一個已經完成的數據庫,並且不能改變,當我在我的控制器中調用客戶端時出現此錯誤獲取此錯誤,因爲它查找不存在的Empresa_id,所以我可以告訴尋找正確的領域?實體框架代碼第一:如何爲這種關係創建一對多?

return View(clientes.ToPagedList(pageNumber, pageSize)); 

it return this select 
SELECT 
[Extent1].[id] AS [id], 
[Extent1].[name] AS [name], 
[Extent1].[empresa] AS [empresa], 
[Extent1].[Empresa_id] AS [Empresa_id] 
FROM [dbo].[cliente] AS [Extent1] 
ORDER BY [Extent1].[name] ASC} 


public class cliente 
    { 
     [Key] 
     public int id { get; set; } 
     public string name { get; set; } 
     public int empresa { get; set; } // foreing key 

     public virtual empresa Empresa { get; set; } 
    } 

    public class empresa 
    { 
     [Key] 
     public int id { get; set; } 

     public string descripcion { get; set; } 

     public virtual ICollection<cliente> Clientes { get; set; } 
    } 
+1

您應該真的閱讀有關命名約定的內容。擁有兩個僅由第一個角色的外殼而不同的公共財產是可怕的。 – 2012-07-11 13:48:30

+0

是的,我的壞在那裏謝謝你 – 2012-07-11 13:56:03

回答

0

你必須告訴EF這empresa是導航性能Empresa外鍵,否則將採用默認外鍵的名字,那就是「NavigationPropertyName +下劃線+ KeyNameInTargetClass」 = Empresa_id。您可以通過應用[ForeignKey]屬性覆蓋此默認設置:

public class cliente 
{ 
    [Key] 
    public int id { get; set; } 
    public string name { get; set; } 

    [ForeignKey("Empresa")] 
    public int empresa { get; set; } 

    public virtual empresa Empresa { get; set; } 
} 
相關問題