【发布时间】:2021-07-31 22:28:26
【问题描述】:
我有一个结构如下的表:
CREATE TABLE [dbo].[Wing]
(
[Id] [UNIQUEIDENTIFIER] NOT NULL
CONSTRAINT [PK_Wing] PRIMARY KEY CLUSTERED ([Id])
CONSTRAINT [DF_Wing__Id] DEFAULT (newid()),
[Name] [NVARCHAR](50) NULL
)
我已将实体框架中的模型构建器设置为:
modelBuilder.Entity<Wing>(
entity =>
{
entity.HasKey(e => e.Id);
//Start of Id
entity.Property(e => e.Id)
.HasColumnName("Id")
.HasColumnType(typeof(Guid).Name);
//End of Id
entity.Property(e => e.Name)
.HasColumnName("Name")
.HasColumnType(typeof(string).Name);
});
现在,当我尝试添加新翼时,我将值设置为:
Wing wing = new Wing() {Name = "Wing 1"};
然后我将它添加到数据库中使用
await dbContext.Set<Wing>().AddAsync(wing);
await dbContext.SaveChangesAsync();
当我以这种方式添加单个 Wing 时,它可以按预期工作而不会出错。 当我使用以下代码添加多个翅膀时:
List<Wing> wings = new List<Wing>();
wings.Add(new Wing() {Name = "Wing 1"});
wings.Add(new Wing() {Name = "Wing 2"});
await dbContext.Set<Wing>().AddRangeAsync(wings);
await dbContext.SaveChangesAsync();
我收到以下错误:
Column, parameter, or variable #1: Cannot find data type Guid
但是,当我在模型构建器中注释掉绑定“Id”的代码时,一切都按预期工作,没有任何异常。
有人可以帮助我解决根本原因或解决方案吗?我很难过,因为无论是否使用“Id”列的模型构建器,类似的表都可以正常工作。
【问题讨论】:
标签: c# entity-framework .net-core entity-framework-core azure-sql-database