2016-08-04 9 views
1

、私は以下に示すように、ユーザーや学生と呼ばれる2つのエンティティがありますMVCプロジェクトでPK/FK関係文字列と一意識別子を作成するにはどうすればいいですか?

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 
} 

を、私はEFコードファーストを使用して、これらのエンティティ間の関係を作成します。 UserエンティティのUserIdフィールドとしてどのデータ型を使用する必要がありますか?文字列またはGuid(UserテーブルのIdフィールドにGuid値があります)あなたは例を挙げていただけますか?

+0

** UserテーブルのIdフィールドにGuid値があります**既にテーブルがありますか?なぜあなたはそれがどんなタイプであるべきか尋ねていますか?あなたのプロパティのタイプは一致する必要があります(PK&FKテーブルで) – Shyju

+0

@Shyju私はASP.NET Identity Userテーブルを意味しました:)だから、私はそれとの関係を作成する必要がありますが、私のカスタムテーブルでは、 –

+0

@Shyjuどのような返事をお願いしますか? –

答えて

0

実際には、インデックスの目的でIDフィールドにintを使用する必要があります。 Guidまたは文字列を使用すると、intよりも大幅に遅くなります。

しかし、あなたの質問には、UserIdの種類は、ユーザーエンティティにGUIDのために行くことができUser.Id

+0

はい、私は知っていますが、ASP.NET IDテーブルとの関係を作成する必要があり、Idフィールドとして文字列(GUID)データ型を使用します。一方、それらをIntに変更することは、本当に大きな問題であり、正しく実行されませんでした。だから、どんな例をお願いしますか? –

+0

@binary IDテーブルのidカラムを変更して、stringの代わりにintを使用することができます。しかし、生産段階に入ってからは簡単ではありません。したがって、あなたの場合は、データ型がデータベースのGuidの代わりにvarcharであるため、文字列がついています – Steve

+0

多くのページで多くの異なるメソッドを試しましたが、どれも正しく動作していません。だから、唯一の選択肢は、私のカスタムテーブルとAP.NETユーザーテーブルに適切な関係を作成することです。しかし、私が文字列を使用する場合、それは新しいテーブルの学生のテーブルのGUID値を作成することは可能ですか? –

0

と同じタイプである必要があります。

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 IDのデフォルトテーブルであり、Userエンティティを変更したくありません。だから、その場合、私は学生のUserIdフィールドのGuidや文字列を使うべきですか?もし私が文字列でなければならない場合、どのように私は学生の新しいレコードのGUID値を作成できますか?あなたはあなたの答えを修正してください。 –

+0

ご返信ください。 –

関連する問題