2

我需要为每一行创建一个唯一的哈希值,所以我创建了一个 type 的列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删除该列?

4

1 回答 1

4

这是因为它的范围是private.

通过省略public前面的 ,代码优先迁移生成器不会将其视为需要担心的属性。

将其更改为:

public Guid RowGuid { set; get; }
于 2013-02-11T05:27:42.123 回答