我需要为每一行提供唯一的哈希值,因此我创建了一个类型为Guid
的列。
public class SendingLog
{
[Key]
public int SendingLogId { get; set; }
[Required, ForeignKey("Apartment")]
public int ApartmentId { get; set; }
public virtual Apartment Apartment { get; set; }
Guid RowGuid { set; get; }
[MaxLength(256), Required]
public string Email { get; set; }
[Required]
public DateTime SentTime { get; set; }
public int SentByUserId { get; set; }
}
但是,代码首次迁移会生成以下代码。
public override void Up()
{
CreateTable(
"dbo.SendingLogs",
c => new
{
SendingLogId = c.Int(nullable: false, identity: true),
ApartmentId = c.Int(nullable: false),
Email = c.String(nullable: false, maxLength: 256),
SentTime = c.DateTime(nullable: false),
SentByUserId = c.Int(nullable: false),
})
.PrimaryKey(t => t.SendingLogId)
.ForeignKey("dbo.Apartments", t => t.ApartmentId, cascadeDelete: true)
.Index(t => t.ApartmentId);
}
为什么删除Guid
列?
答案 0 :(得分:4)
这是因为它的范围是private
。
通过省略前面的public
,代码第一个迁移生成器不会将其视为需要担心的属性。
将其更改为:
public Guid RowGuid { set; get; }