2012-01-20 73 views
0

我需要重寫一個傳統的ASP創建關係一到一至#NET和系統具有的C 2個表:EF 4.2無關係的數據庫

表1:

Table1 
{ 
    [Key] 
    public string WebRef {get;set;} 
    .... 
} 

表2:

Table2 
{ 
    [Key] 
    public string WebRef{get;set;} 
    [Key] 
    public int sequence{get;set;} 
    ..... 
} 

在SQL Server上它們沒有任何關係,但它是一對一的關係。

問:是否可以使用EF 4.2創建關係?

我需要把表2表1的模型裏面如:

Table1 
{ 
    [Key] 
    public string WebRef {get;set;} 
    .... 
    public Table2 table2{get;set} 
} 

預先感謝您。

+1

你試過嗎? –

+0

是的,我做了,我收到一個錯誤: '無效的列名'Table2_WebRef'.' '無效的列名'Table2_sequence'.' 我試圖映射配置,但我仍然這個錯誤。 – cristiam

回答

0

試試這個

public class Table1 
{ 
    [Key] 
    [DatabaseGenerated(DatabaseGeneratedOptions.Identity)] 
    public int Table1ID{get;set;} 

} 

public class Table2 
{ 
    [Key] 
    [DatabaseGenerated(DatabaseGeneratedOptions.Identity)] 
    public int Table2ID{get;set;} 

    [ForeignKey("Table1")] 
    public int Table1ID {get;set;} 

    public virtual Table1 Table1 {get; set;} 

} 

這是1對N的關係,做一個一比一的關係,你需要SQLSERVER設置表2的Table1ID作爲唯一鍵,因爲EF CodeFirst不支持獨特的鍵...

+0

我需要在數據庫中創建另一個主鍵嗎?沒有其他辦法嗎? – cristiam

+0

每個表都需要一個PrimaryKey ...在Table2中,您需要一個PrimaryKey和一個UniqueKey,它也是Table1的一個ForeingKey,是唯一的一對一的關係。 EF CodeFirst不支持UniqueKeys,所以您需要通過sqlserver將Table2的Table1ID設置爲uniquekey。 這是我知道的唯一方法。 –

+0

這兩個表都有主鍵,但它們是字符串。我不知道是否可以更改數據庫,因爲傳統的ASP已經存在。 謝謝。 – cristiam