Q:

Why was Guid column removed?

I need a unique hash value for each row so I created a column with 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; }
}

However, the code first migration generated the following code.
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);
}

Why the Guid column is removed?

A:

It's because it's scope is private.
by omitting the public at the front, the code first migration generator doesn't see it as a property that it needs to worry about.
Change it to:
public Guid RowGuid { set; get; }

