实体框架忽略Column属性

时间:2016-01-14 13:16:34

标签: c# mysql entity-framework

我有一个使用实体框架数据注释映射到POCO的大型MySQL数据库。

除了一个表中的一列(或者至少我还没有注意到任何其他类似的问题),大多数事情都很有效。

mysql > describe _passwords;
+----------------+------------+------+-----+---------------------+----------------+
| Field          | Type       | Null | Key | Default             | Extra          |
+----------------+------------+------+-----+---------------------+----------------+
| id             | bigint(20) | NO   | PRI | NULL                | auto_increment |
| creation_date  | timestamp  | NO   |     | CURRENT_TIMESTAMP   |                |
| user_id        | bigint(20) | NO   | MUL | NULL                |                |
| password_hash  | char(64)   | NO   |     | NULL                |                |
| valid_end_date | timestamp  | NO   |     | 0000-00-00 00:00:00 |                |
+----------------+------------+------+-----+---------------------+----------------+

password_hash列的映射方式如下:

[Required]
[Index(IsUnique=true)]
[Column("password_hash")]
public String PasswordHash
{
    get;
    set;
} 

然而,当EF运行此查询时,它将其称为PasswordHash,自然会失败。

当我使用Fluent API尝试相同时,它可以工作:

modelBuilder.Entity<Password>().Property(password => password.PasswordHash).HasColumnName("password_hash");

然而,其他一切都使用数据注释进行映射,坦率地说,我喜欢这种方式。因此,在将此/所有映射移动到Fluent API

时,请更好地理解此问题的根源

0 个答案:

没有答案