Guid(全局唯一标识符)是一种128位整数(16字节),用于在计算机系统中提供唯一的标识符。在Entity Framework 4 Code First中,Guid可以作为实体类的主键(Primary Key)使用。
public class Product
{
[Key]
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public Guid Id { get; set; }
public string Name { get; set; }
public decimal Price { get; set; }
}
public class Order
{
public Order()
{
Id = Guid.NewGuid();
}
[Key]
public Guid Id { get; set; }
public DateTime OrderDate { get; set; }
}
问题1:插入性能差
问题2:迁移现有自增ID系统
问题3:URL中Guid太长
public static string ToShortString(this Guid guid)
{
return Convert.ToBase64String(guid.ToByteArray())
.Replace("/", "_")
.Replace("+", "-")
.Substring(0, 22);
}
Guid作为主键在EF4 Code First中实现简单,特别适合分布式系统和需要离线生成的场景,但需要注意性能优化和存储成本。根据具体应用场景权衡是否使用Guid作为主键。