2013-03-19 42 views
0

我需要通过掩码生成一个主键(例如:BS{100-999}-{Rand(100-999)})但我不知道如何在EF代码中生成这样的密钥/有人可以帮我解决这个问题出来吗?实体框架如何通过掩码生成PrimaryKey

我的模型:

[Table("Tickets")] 
public class Ticket 
{ 
    public Ticket() 
    { 
     CreationDate = DateTime.UtcNow; 
     LastChangeDate = DateTime.UtcNow; 
     UserReviewed = true; 
     EmailAlert = true; 
    } 
    [Key] 
    [DatabaseGenerated(System.ComponentModel.DataAnnotations.Schema.DatabaseGeneratedOption.Identity)] 
    public Guid Id { get; set; } //now it is Guid But i need this to be string and generated by the above mask 
    public string UsersName { get; set; } 
    public string Theme { get; set; } 
    public string Request { get; set; } 
    public DateTime CreationDate { get; set; } 
    public string TypeMask { get; set; } 
    public string StatusMask { get; set; } 
    public int SenderId { get; set; } 
    public bool EmailAlert { get; set; } 
    public DateTime LastChangeDate { get; set; } 
    public bool UserReviewed { get; set; } 
    public virtual ICollection<TicketRecord> Answers { get; set; } 
    [ForeignKey("StatusMask")] 
    public virtual TicketStatus Status { get; set; } 
    [ForeignKey("TypeMask")] 
    public virtual TicketType Type { get; set; } 
    [ForeignKey("SenderId")] 
    public virtual UserProfile Sender { get; set; } 
    public virtual AttachmentsCollection IncludedFiles { get; set; } 
} 
+0

你问如何映射密钥?或者你如何制作序列? – Jorge 2013-03-19 02:31:37

+0

@Jorge我问如何使EF生成一个新的唯一键,当我使用我的模式添加一条记录 – CodeDemen 2013-03-19 02:37:57

+0

您需要定义您的映射的关键,唯一的'EF'它将为您做它它生成的约束在数据库中,和'sql'需要插入的值,但没有别的 – Jorge 2013-03-19 02:43:04

回答

0

EF从来没有生成密钥。您可以自己生成密钥,也可以让EF知道该密钥将由数据库使用StoreGeneragedPattern注释/设置生成。 EF无法生成密钥,因为它无法保证生成值的唯一性。