c# - 如何首先在代码中或使用 ColumnBuilder 将 ROWGUIDCOL 属性指定为 Guid 类型的列?

标签 c# .net sql-server entity-framework ef-code-first

考虑这个迁移代码:

       CreateTable(
            "dbo.Document",
            c => new
                {
                    Id = c.Int(nullable: false, identity: true),
                    Doc = c.String(),
                    RowGuid = c.Guid(nullable: false),
                    Person_Id = c.Int(),
                })
            .PrimaryKey(t => t.Id)
            .ForeignKey("dbo.Person", t => t.Person_Id)
            .Index(t => t.Person_Id);

我希望 RowGuidROWGUIDCOL,并像这样定义 (SQL):

 [RowGuid] [UNIQUEIDENTIFIER] not null RowGuidCol Unique default newid()

EntityFramework/CodeFirst 中的等效代码是什么?解决方案是什么?

谢谢。

最佳答案

我想您希望它用于具有 FILESTREAM 列的表。使用 EntityTypeConfiguration 提示 EF 使其生成正确的脚本并且不需要您手动编辑它(EF Core 2.2)。

以这个样本实体为例:

public class FileEntity
{
    public Guid FileGuid { get; private set; }
    public byte[] Document { get; private set; }
}

这个配置:

public class FileEntityConfiguration : IEntityTypeConfiguration<FileEntity>
{
    public void Configure(EntityTypeBuilder<FileEntity> builder)
    {
        builder
            .Property(m => m.Document)
            .HasColumnType("VARBINARY(MAX) FILESTREAM");

        builder
            .Property(m => m.FileGuid)
            .HasColumnType("UNIQUEIDENTIFIER ROWGUIDCOL")
            .IsRequired();

        builder
            .HasAlternateKey(m => m.FileGuid);
    }
}

EF 生成正确的迁移脚本:

FileGuid = table.Column<Guid>(type: "UNIQUEIDENTIFIER ROWGUIDCOL", nullable: false),
Document = table.Column<byte[]>(type: "VARBINARY(MAX) FILESTREAM", nullable: true)

关于c# - 如何首先在代码中或使用 ColumnBuilder 将 ROWGUIDCOL 属性指定为 Guid 类型的列?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17319289/

相关文章:

C# MongoDb 驱动程序包含子对象

c# - 检索硬盘序列号和物理 MAC 地址的最快方法

java - 如何传递 NULL 数据类型?

sql - 备份数据库和复制配置?

sql-server - mssql将varchar转换为float

c# - 值不能为空。参数名称 : source when trying to get data with web api

c# - EF 中的常量导致异常

c# - Parallel.ForEach 没有启动新线程

SQL 查询返回前 2 个值

c# - 将文件流式传输到 Azure Blob 存储?