身份不是用guid上的流畅配置实体框架创建的

时间:2014-02-19 12:23:12

标签: entity-framework-5 entity-framework-6 ef-migrations

我有一个奇怪的实体框架迁移案例和数据库生成的guid列。

public class ErrorLogs
{
    public Guid ErrorLogsId { get; set; }
    public Int64 Sequence { get; set; }        
}

这是具有两个标识列的类。一个是guid,另一个是序列。但是,我已根据OnModelCreating方法中的流畅配置配置了实体框架。

我在这里定义了主要的约定。如

builder.Properties().Where(x => x.Name == x.DeclaringType + "Id").Configure(config =>
        {
            config.IsKey().HasDatabaseGeneratedOption(DatabaseGeneratedOption.Identity);
        });

        builder.Properties().Where(x => x.Name == "Sequence" && x.PropertyType == typeof(Int64)).Configure(x =>
        {
            x.HasDatabaseGeneratedOption(DatabaseGeneratedOption.Identity);                
        });

现在有趣的是。我生成迁移时。 int列显示其标识。但迁移文件在Guid列上没有标识选项。 但是对于我在OnModelCreating方法中提到的约定,它应该在Guid列上生成带有identity参数的迁移文件。可以告诉我任何人为什么会这样吗?

还有一点需要注意。如果我使用EntityTypeConfiguration<ErrorLogs>并将其作为 builder.Configurations.Add(new ErrorLogsMappingMap());然后它也能够为guid创建标识列。但不是在全球流畅的实体配置惯例的情况下。

迁移文件生成为:

 CreateTable(
            "REMS.ErrorLogs",
            c => new
                {
                    ErrorLogsId = c.Guid(nullable: false),
                    Sequence = c.Long(nullable: false, identity: true)                      
                })
            .PrimaryKey(t => t.ErrorLogsId);

但实际上文件中应该是ErrorLogsId = c.Guid(nullable: false,identity:true),

0 个答案:

没有答案