小编kpk*_*k47的帖子

HasColumnType和Database生成的正确用法是什么

我正在将大约EF模型从EF4迁移到EF6的大约EF模型,我也将它从Designer EDMX生成的数据库更改为Code First数据库.

现在我正在使用EF fluent-api配置实体关系,我不确定我是否正确使用它.

它是SQL Server数据库中的类型varchar(50),所以我应该像这样配置它吗?

        mb.Entity<SomeObject>()
            .Property(so => so.Type)
            .IsUnicode(false)
            .HasColumnName("Type")
            .HasColumnType("varchar")
            .HasMaxLength(50)
            .IsRequired()
            .HasDatabaseGeneratedOption(DatabaseGeneratedOption.None);
Run Code Online (Sandbox Code Playgroud)

或者像这样,没有HasMaxLength(50)

        mb.Entity<SomeObject>()
            .Property(crt => crt.Type)
            .IsUnicode(false)
            .HasColumnName("Type")
            .HasColumnType("varchar(50)")
            .IsRequired()
            .HasDatabaseGeneratedOption(DatabaseGeneratedOption.None);
Run Code Online (Sandbox Code Playgroud)

另外,假设我有另一个带有GUID ID的对象:

    mb.Entity<AnotherObject>()
        .Property(ao => ao.ID)
        .HasColumnName("ID")
        .HasColumnType("uniqueidentifier")
        .IsRequired()
        .HasDatabaseGeneratedOption(DatabaseGeneratedOption.None);
Run Code Online (Sandbox Code Playgroud)

在数据库中它有一个默认的newsequentialid(),我应该是配置方面DatabaseGeneratedOption.None,DatabaseGeneratedOption.IdentityDatabaseGeneratedOption.Computed

这些选项有什么区别?此外,在代码中,GUID主要在对象实例化时分配,如下所示:

Guid ID = new Guid.NewGuid()
Run Code Online (Sandbox Code Playgroud)

这合适吗?

c# entity-framework fluent-interface

6
推荐指数
1
解决办法
1万
查看次数

标签 统计

c# ×1

entity-framework ×1

fluent-interface ×1