2017-01-25 11 views
0

重複するデータを避けるために、データベースに存在しない乱数を生成する必要があります。言い換えれば、コードが生成されたコードを生成する前にデータベースが存在しないかどうかをチェックする必要があります。Entity Framework、データベースに存在しない乱数を生成する方法

これは私のエンティティがどのように見えるかです:

public partial class User 
{ 
    public int Id { get; set; } 

    public string PhoneNumber { get; set; } 

    public string Code { get; set; } 

} 

と、ここで私はコードを生成する方法です:@Tannerが尋ねたよう

 User user new User(); 
     Random random = new Random(); 
     user.Code = random.Next().ToString(); 
+4

なぜあなたはこれを自分でやっていると、なぜあなたは、SQLサーバーによって生成され、管理のユニークなIDを使用していませんか?ランダムなものが必要な場合は、[uniqueidentifier/guid](https://msdn.microsoft.com/en-us/library/ms187942.aspx)を使用してください。 – Tanner

+0

'[Key]'属性を 'Id 'プロパティ。 –

+0

@Tanner ..私はIDが必要ではない、私はちょうどデータベースに存在しない番号を生成する必要があります..どのようにデータベース内の番号と既にデータベース内の番号が別のものを生成する方法を確認する方法 – Tom

答えて

0

、この機能が必要なんなぜですか?

これは、最適なソリューションに導くのに役立ちます。

エンティティのIDを取得するためにデータベースへの往復を望んでいない場合は、いくつかの合理的な使用例(パフォーマンスなど)があります。

ほとんどの場合、そうしないと魅力的な理由がない限り、データベースでこれを処理させるのが最善です。

質問に答えるには、この問題を解決する2つの方法があります。

A)代わりにGUIDを使用してください。それらは一意になるように設計されており、エンティティーをコミットする前と後の両方でエンティティーにエンティティーを識別させることができます。この目的のためにGUIDSを使用した場合のパフォーマンス上の問題のため、主キーとしてintを使用することもできます。

B)HiLoキー生成戦略を使用します。これにより、エンティティを保存する前にIDを割り当てることができます。この機能は、.NET CoreのEntity Framework(およびnHibernate)でのみ使用できます。

http://www.talkingdotnet.com/use-hilo-to-generate-keys-with-entity-framework-core/ https://channel9.msdn.com/Blogs/Seth-Juarez/Key-Generation-Strategies-in-Entity-Framework-7

関連する問題