考虑这个迁移代码:
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);
我希望 RowGuid
为 ROWGUIDCOL
,并像这样定义 (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/