【问题标题】:Column, parameter, or variable #1: Cannot find data type Guid - Entity Framework Core列、参数或变量 #1:找不到数据类型 Guid - Entity Framework Core
【发布时间】: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


    【解决方案1】:

    HasColumnType 指的是数据库类型,而不是 .NET 类型。所以它应该是“UNIQUEIDENTIFIER”。

    【讨论】:

    • 感谢您的回复。将对此进行测试。但是,如果数据类型不匹配,SaveChanges 如何为一个实体而不是多个实体工作?
    猜你喜欢
    • 1970-01-01
    • 2020-04-11
    • 2014-12-22
    • 1970-01-01
    • 2021-07-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多