2013-10-21 28 views
0

這是我在C#MVC項目中的模型類。我想將Membership Id設置爲唯一字段?如何在MVC模型中創建唯一字段?

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; } 
} 
+0

這是對象映射到一些ORM,像EF? –

+0

是的,的確是你想要的。 – Thaven

+0

http://stackoverflow.com/questions/16678625/asp-net-mvc-4-ef5-unique-property-in-model-best-practice –

回答

0

我只能猜測,因爲你沒有提到你班上的關鍵是什麼。

根據DataAnnotations,實體框架不支持unique列。您唯一能做的就是將一列設置爲主鍵,並將其他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; } 
} 

通過使一列的一個GUID您的產生相同的2個鍵的機率價值接近零。

+0

你能告訴我如何添加Context類中的唯一列?因爲我需要將會員Id設置爲獨特的一些方式。 – user2901979

+0

哪個'context'類? DbContext? – Marco

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可以掌握您的代碼並啓用某些功能。就像一個高效的跟蹤mechnaism

所以:如果您有指定對象ID屬性,EF假定財產 持有主鍵值,並建立在SQL Server 自動增量(標識)鍵列,以保存屬性值。

編輯:

「物體」,意思是客戶的對象。本質上,您的示例中的主鍵位於客戶中,而外鍵位於與客戶相關的所有其他表中。主鍵不能重複或爲空。外鍵 - 是的。同一客戶可能擁有多個銀行賬戶。 :) 所以,如果你想知道,設置你的鑰匙的管道在哪裏,停下來。 MVC只需查看上面的代碼並決定(在腳手架選擇上)如何製作數據庫中的表格。你不必指示除了你所看到的媒體鏈接(以下簡稱「ID」的結尾)

編輯根據我的意見沒有在你的代碼:

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; } 
} 
+0

如果您推薦的屬性是虛擬的,那麼爲什麼不通過將'Customer'類中的'MembershipId'虛擬成一個例子? – Marco

+0

@Serv虛擬屬性不是 必需的,但它們確實給EF控制構建它自己的機制 –

+0

CustomerId是主鍵。而且會員ID是唯一字段,如國民身份證號碼 – user2901979

相關問題