2016-08-04 64 views
1

我有兩個實體稱爲用戶和學生,如下圖所示:如何創建PK/FK關係字符串和uniqueidentifier?

public class User 
{ 
    [Key] 
    public string Id { get; set; } 

    //omitted for brevity 
} 


public class Student 
{ 
    [Key] 
    public int Id { get; set; } 

    //Foreign key for User 
    public Guid UserId { get; set; } 

    //omitted for brevity 
} 

在一個MVC項目,我使用EF代碼第一次和要創建這些實體之間的關係。我應該在用戶實體中使用哪種數據類型作爲UserId字段?字符串或Guid(在用戶表的Id字段中有Guid值)?你能舉個例子嗎?

+0

**在用戶表的Id字段中有Guid值**您已經有一個表?你爲什麼問這是什麼類型呢?你的財產的類型應該匹配(在PK&FK表 – Shyju

+0

@Shyju我的意思是ASP.NET身份用戶表:)所以,我需要與它建立關係,但不知道我應該在我的自定義表中使用什麼數據類型? –

+0

@Shyju有沒有回覆? –

回答

0

你應該真的使用int爲ID字段的索引目的。使用Guid或字符串會比int慢得多。

但對於你的問題,的UserId的類型必須是相同的類型User.Id

+0

是的,我知道,但我需要創建與ASP.NET身份表的關係,它使用字符串(GUID)數據類型作爲Id字段。另一方面,將它們更改爲Int確實是一個大問題,並且不能正確執行。那麼,請舉例嗎? –

+0

@binary您可以將Identity表的id列更改爲使用int而不是字符串。但是,一旦你處於生產階段,這並不容易。所以在你的情況下,你是堅持與字符串,因爲數據庫中的數據類型是varchar而不是Guid – Steve

+0

我在很多頁面上嘗試了許多不同的方法,但沒有一個能正常工作。所以,唯一的選擇是在我的自定義表和AP.NET用戶表中創建一個合適的關係。但是如果我使用字符串,是否可以爲Student表中的新記錄創建Guid值? –

0

您可以在用戶實體去GUID。

public class User 
{ 
    [Key] 
    public Guid Id { get; set; } 
} 

public class Student 
{ 
    [Key] 
    public int Id { get; set; } 

    //Foreign key for User 
    public Guid UserId { get; set; } 

    public virtual User User { get; set; } 

} 
+0

用戶是ASP.NET身份的默認表,我不想修改用戶實體。那麼,在這種情況下,我應該在Student中使用Guid還是字符串作爲UserId字段?如果我應該如何爲Student中的新記錄創建GUID值?你能修改你的答案嗎? –

+0

有任何答覆嗎? –