1

これは、C# MVC プロジェクトのモデル クラスです。メンバーシップ ID を一意のフィールドとして設定したいですか?

public class Customer
{
        public int CustomerID { get; set; }
        public string MembershipID { get; set; }
        public string FirstName { get; set; }
        public string LastName { get; set; }
        public string EmailAddress { get; set; }
}
4

3 に答える 3

0

クラスのキーが何であるかについて言及していないので、推測することしかできません。

uniqueEntity Framework は、DataAnnotations に従って列をサポートしていません。できる唯一のことは、1 つの列を主キーとして設定し、他の ID 列を Guid として設定することです。

CustomerIDあなたの主キーであると仮定します:

using System.ComponentModel.DataAnnotations;

public class Customer
{
    [Key]
    public int CustomerID { get; set; }
    public Guid MembershipID { get; set; }
    public string FirstName { get; set; }
    public string LastName { get; set; }
    public string EmailAddress { get; set; }
}

あなたのMembershipIDがあなたの主キーであると仮定します:

using System.ComponentModel.DataAnnotations;

public class Customer
{

    public Guid CustomerID { get; set; }
    [Key]
    public int MembershipID { get; set; }
    public string FirstName { get; set; }
    public string LastName { get; set; }
    public string EmailAddress { get; set; }
}

列の 1 つを GUID にすることで、同じ値の 2 つのキーを生成する可能性はゼロに近くなります。

于 2013-10-21T06:47:00.510 に答える
0
public class Customer
{
    public int CustomerId { get; set; }
    public string MembershipId { get; set; }
    public string FirstName { get; set; }
    public string LastName { get; set; }
    public string EmailAddress { get; set; }
}

public class Company
 {
     public string MembershipId { get; set; }
     public string Name {get; set;}

 }
public class CustomersBankAccount
 {
   public string Name {get; set;}
   public int CustomerId { get; set; }
 }

コード ファーストの規則でデータベースを構築する場合の規則は、"Id" (外部キー) 部分をプロパティに統合することです。もちろん、EF がコードを把握して一部の機能を有効にできるように、すべてのプロパティを仮想として宣言することをお勧めします。効率的な追跡メカニズムのように

そのため: ID という名前のオブジェクトにプロパティがある場合、EF はプロパティが主キー値を保持していると想定し、プロパティ値を保持するために SQL Server に自動インクリメント (ID) キー列を設定します。

編集:

「オン・ザ・オブジェクト」とは、顧客のオブジェクトを意味します。基本的に、この例の主キーは customer にあり、外部キーは customer に関連する他のすべてのテーブルにあります。主キーを複製または null にすることはできません。外部キー - はい。同じ顧客が複数の銀行口座を持っている可能性があります。:) だから、あなたの鍵を設定するための配管はどこにあるのか疑問に思っているなら、やめてください。MVC は上記のコードを調べて、DB でテーブルを作成する方法を (足場の選択に基づいて) 決定するだけです。既に見たもの ("Id" と end ) を除いて、コードで何も示す必要はありません。

私のコメントに基づいて編集します。

  public class Customer
{
    public int CustomerId { get; set; }
    [Remote("CheckMembershipIdActionMethod", "CorrespondingController")]
    public string MembershipId { get; set; }
    public string FirstName { get; set; }
    public string LastName { get; set; }
    public string EmailAddress { get; set; }
}
于 2013-10-21T06:48:49.507 に答える