没有给定的参数对应于xxx的要求的形参'id'
There is no argument given that corresponds to the required formal parameter 'id' of xxx
我正在尝试实例化这个 class:
class:
using System.Text.Json.Serialization;
public class GroceryItemTag
{
[JsonConstructor]
public GroceryItemTag(string name, GroceryItemTagEnum id, int iconCodePoint)
{
Id = id;
IconCodePoint = iconCodePoint;
Name = name;
}
public GroceryItemTagEnum Id { get; set; }
public int IconCodePoint { get; set; }
public string Name { get; set; }
}
我收到这个错误:
There is no argument given that corresponds to the required formal parameter 'id' of 'GroceryItemTag.GroceryItemTag(GroceryItemTagEnum, int, string)'
我在这里尝试实例化 class(枚举是整数):
builder.Entity<GroceryItemTag>().HasData(
new GroceryItemTag[] {
new GroceryItemTag(
"Baby & Child",
GroceryItemTagEnum.BabyAndChild,
0xf77c
),
new GroceryItemTag(
"Baking",
GroceryItemTagEnum.Baking,
0xf563
),...
GroceryItemTagEnum:
public enum GroceryItemTagEnum
{
BabyAndChild = 1,
Baking,
Bathroom,
BeerAndWine,
Condiments,
Confectionary,
Cooking,
Dessert,
Drinks,
FauxDairy,
FauxMeat,
FauxSeafood,
FridgeAndDeli,
Frozen,
HealthFood,
HouseHold,
Other,
Pantry,
Pet,
}
数据库上下文:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text.Json;
using Microsoft.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore.ChangeTracking;
namespace Vepo.Domain
{
public class VepoContext : DbContext
{
public VepoContext(DbContextOptions<VepoContext> options)
: base(options)
{
}
protected override void OnModelCreating(ModelBuilder builder)
{
builder.Entity<GroceryItemGroceryStore>().HasKey(table => new
{
table.GroceryItemId,
table.GroceryStoreId
});
builder.Entity<MenuItemRestaurant>().HasKey(table => new
{
table.MenuItemId,
table.RestaurantId
});
builder.Entity<GroceryItemTag>()
.Property(tag => tag.Id)
.ValueGeneratedNever();
builder.Entity<MenuItemTag>()
.Property(tag => tag.Id)
.ValueGeneratedNever();
builder.Entity<GroceryItemTag>().HasData(
new GroceryItemTag[] {
new GroceryItemTag(
"Baby & Child",
GroceryItemTagEnum.BabyAndChild,
0xf77c
),
new GroceryItemTag(
"Baking",
GroceryItemTagEnum.Baking,
0xf563
),
new GroceryItemTag (
"Beer & Wine",
GroceryItemTagEnum.BeerAndWine,
0xf4e3
),
new GroceryItemTag (
"Condiments",
GroceryItemTagEnum.Condiments,
0xf72f
),
new GroceryItemTag (
"Confectionary",
GroceryItemTagEnum.Confectionary,
0xf819
),
new GroceryItemTag (
"Cooking",
GroceryItemTagEnum.Cooking,
0xe01d
),
new GroceryItemTag (
"Dessert",
GroceryItemTagEnum.Dessert,
0xf810
),
new GroceryItemTag (
"Drinks",
GroceryItemTagEnum.Drinks,
0xf804
),
new GroceryItemTag (
"Faux Meat",
GroceryItemTagEnum.FauxMeat,
0xf814
),
new GroceryItemTag (
"Faux Dairy",
GroceryItemTagEnum.FauxDairy,
0xf7f0
),
new GroceryItemTag (
"Faux Seafood",
GroceryItemTagEnum.FauxSeafood,
0xf7fe
),
new GroceryItemTag (
"Fridge & Deli",
GroceryItemTagEnum.FridgeAndDeli,
0xe026
),
new GroceryItemTag (
"Frozen",
GroceryItemTagEnum.Frozen,
0xf7ad
),
new GroceryItemTag (
"Bathroom",
GroceryItemTagEnum.Bathroom,
0xe06b
),
new GroceryItemTag (
"Health Food",
GroceryItemTagEnum.HealthFood,
0xf787
),
new GroceryItemTag (
"Household",
GroceryItemTagEnum.HouseHold,
0xf898
),
new GroceryItemTag (
"Pantry",
GroceryItemTagEnum.Pantry,
0xf7eb
),
new GroceryItemTag (
"Pet",
GroceryItemTagEnum.Pet,
0xf6d3
),
new GroceryItemTag (
"Other",
GroceryItemTagEnum.Other,
0xf39b
}});
builder.Entity<MenuItemTag>().HasData(
new MenuItemTag[] {
new MenuItemTag {
Name = "American",
Id = MenuItemTagEnum.American,
IconCodePoint = 0xf803
},
new MenuItemTag {
Name = "Asian",
Id = MenuItemTagEnum.Asian,
IconCodePoint = 0xf823
},
new MenuItemTag {
Name = "Bakery",
Id = MenuItemTagEnum.Bakery,
IconCodePoint = 0xf705
},
new MenuItemTag {
Name = "Barbecue",
Id = MenuItemTagEnum.Barbecue,
IconCodePoint = 0xf80f
},
new MenuItemTag {
Name = "Breakfast",
Id = MenuItemTagEnum.Breakfast,
IconCodePoint = 0xe002
},
new MenuItemTag {
Name = "Cafe",
Id = MenuItemTagEnum.Cafe,
IconCodePoint = 0xf6c5
},
new MenuItemTag {
Name = "Chinese",
Id = MenuItemTagEnum.Chinese,
IconCodePoint = 0xf823
},
new MenuItemTag {
Name = "Deli",
Id = MenuItemTagEnum.Deli,
IconCodePoint = 0xf81f
},
new MenuItemTag {
Name = "Desserts",
Id = MenuItemTagEnum.Desserts,
IconCodePoint = 0xf551
},
new MenuItemTag {
Name = "European",
Id = MenuItemTagEnum.European,
IconCodePoint = 0xf7a2
},
new MenuItemTag {
Name = "Fish & Chips",
Id = MenuItemTagEnum.FishAndChips,
IconCodePoint = 0xf7fe
},
new MenuItemTag {
Name = "Indian",
Id = MenuItemTagEnum.Indian,
IconCodePoint = 0xf156
},
new MenuItemTag {
Name = "French",
Id = MenuItemTagEnum.Fench,
IconCodePoint = 0xf7f6
},
new MenuItemTag {
Name = "German",
Id = MenuItemTagEnum.German,
IconCodePoint = 0xf820
},
new MenuItemTag {
Name = "Greek",
Id = MenuItemTagEnum.Greek,
IconCodePoint = 0xf68b
},
new MenuItemTag {
Name = "Health Food",
Id = MenuItemTagEnum.HealthFood,
IconCodePoint = 0xf81e
},
new MenuItemTag {
Name = "Italian",
Id = MenuItemTagEnum.Italian,
IconCodePoint = 0xf817
},
new MenuItemTag {
Name = "Japanese",
Id = MenuItemTagEnum.Japanese,
IconCodePoint = 0xf56a
},
new MenuItemTag {
Name = "Kebab",
Id = MenuItemTagEnum.Kebab,
IconCodePoint = 0xf821
},
new MenuItemTag {
Name = "Kiwi",
Id = MenuItemTagEnum.Kiwi,
IconCodePoint = 0xf535
},
new MenuItemTag {
Name = "Korean",
Id = MenuItemTagEnum.Korean,
IconCodePoint = 0xf159
}});
builder.Entity<GroceryItem>()
.Property(e => e.Tags)
.HasConversion(
v => JsonSerializer.Serialize(v, null),
v => JsonSerializer.Deserialize<List<GroceryItemTag>>(v, null),
new ValueComparer<IList<GroceryItemTag>>(
(c1, c2) => c1.SequenceEqual(c2),
c => c.Aggregate(0, (a, v) => HashCode.Combine(a, v.GetHashCode())),
c => (IList<GroceryItemTag>)c.ToList()));
}
public DbSet<GroceryItem> GroceryItems { get; set; }
public DbSet<GroceryItemGroceryStore> GroceryItemGroceryStores { get; set; }
public DbSet<MenuItemRestaurant> MenuItemRestaurants { get; set; }
public DbSet<MenuItem> MenuItems { get; set; }
public DbSet<GroceryStore> GroceryStores { get; set; }
public DbSet<GroceryItemTag> GroceryItemTags { get; set; }
public DbSet<MenuItemTag> MenuItemTags { get; set; }
public DbSet<Restaurant> Restaurants { get; set; }
}
}
单击转到定义确实转到相同的 GroceryItemTag。以前是这样的:
public class GroceryItemTag
{
public GroceryItemTagEnum Id { get; set; }
public int IconCodePoint {get; set;}
public string Name { get; set; }
}
但我从那个改过来了。
悬停错误:
为什么会出现此错误?
尝试完全限定名称:
我将 GroceryItemTag 添加到 namespace Vepo.Domain
。现在,当我单击转到 GroceryItemTag
上的定义时,它会将我带到 GroceryItemTag 的构造函数。并转到 GRoceryItemTag.GroceryItemTag 的定义说没有找到定义。
右键单击 new GroceryItemTag
中的 GroceryItemTag
,然后 Go To Defintion 并确保 VS 已解析与您的 [=13= 匹配的正确定义].
这种类型的错误看起来像是命名空间问题,但不管怎样,您的代码对于编译器来说显然是不明确的。
同时尝试在 new
表达式中使用完全限定的类型名称,这可能有助于识别冲突。
builder.Entity<GroceryItemTag>().HasData(
new Vepo.Domain.GroceryItemTag[] {
new Vepo.Domain.GroceryItemTag(
"Baby & Child",
GroceryItemTagEnum.BabyAndChild,
0xf77c
),
new Vepo.Domain.GroceryItemTag(
"Baking",
GroceryItemTagEnum.Baking,
0xf563
),...
因为你说的是c#5,我想说它和模式匹配有关,但我无法复制。
我正在尝试实例化这个 class:
class:
using System.Text.Json.Serialization;
public class GroceryItemTag
{
[JsonConstructor]
public GroceryItemTag(string name, GroceryItemTagEnum id, int iconCodePoint)
{
Id = id;
IconCodePoint = iconCodePoint;
Name = name;
}
public GroceryItemTagEnum Id { get; set; }
public int IconCodePoint { get; set; }
public string Name { get; set; }
}
我收到这个错误:
There is no argument given that corresponds to the required formal parameter 'id' of 'GroceryItemTag.GroceryItemTag(GroceryItemTagEnum, int, string)'
我在这里尝试实例化 class(枚举是整数):
builder.Entity<GroceryItemTag>().HasData(
new GroceryItemTag[] {
new GroceryItemTag(
"Baby & Child",
GroceryItemTagEnum.BabyAndChild,
0xf77c
),
new GroceryItemTag(
"Baking",
GroceryItemTagEnum.Baking,
0xf563
),...
GroceryItemTagEnum:
public enum GroceryItemTagEnum
{
BabyAndChild = 1,
Baking,
Bathroom,
BeerAndWine,
Condiments,
Confectionary,
Cooking,
Dessert,
Drinks,
FauxDairy,
FauxMeat,
FauxSeafood,
FridgeAndDeli,
Frozen,
HealthFood,
HouseHold,
Other,
Pantry,
Pet,
}
数据库上下文:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text.Json;
using Microsoft.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore.ChangeTracking;
namespace Vepo.Domain
{
public class VepoContext : DbContext
{
public VepoContext(DbContextOptions<VepoContext> options)
: base(options)
{
}
protected override void OnModelCreating(ModelBuilder builder)
{
builder.Entity<GroceryItemGroceryStore>().HasKey(table => new
{
table.GroceryItemId,
table.GroceryStoreId
});
builder.Entity<MenuItemRestaurant>().HasKey(table => new
{
table.MenuItemId,
table.RestaurantId
});
builder.Entity<GroceryItemTag>()
.Property(tag => tag.Id)
.ValueGeneratedNever();
builder.Entity<MenuItemTag>()
.Property(tag => tag.Id)
.ValueGeneratedNever();
builder.Entity<GroceryItemTag>().HasData(
new GroceryItemTag[] {
new GroceryItemTag(
"Baby & Child",
GroceryItemTagEnum.BabyAndChild,
0xf77c
),
new GroceryItemTag(
"Baking",
GroceryItemTagEnum.Baking,
0xf563
),
new GroceryItemTag (
"Beer & Wine",
GroceryItemTagEnum.BeerAndWine,
0xf4e3
),
new GroceryItemTag (
"Condiments",
GroceryItemTagEnum.Condiments,
0xf72f
),
new GroceryItemTag (
"Confectionary",
GroceryItemTagEnum.Confectionary,
0xf819
),
new GroceryItemTag (
"Cooking",
GroceryItemTagEnum.Cooking,
0xe01d
),
new GroceryItemTag (
"Dessert",
GroceryItemTagEnum.Dessert,
0xf810
),
new GroceryItemTag (
"Drinks",
GroceryItemTagEnum.Drinks,
0xf804
),
new GroceryItemTag (
"Faux Meat",
GroceryItemTagEnum.FauxMeat,
0xf814
),
new GroceryItemTag (
"Faux Dairy",
GroceryItemTagEnum.FauxDairy,
0xf7f0
),
new GroceryItemTag (
"Faux Seafood",
GroceryItemTagEnum.FauxSeafood,
0xf7fe
),
new GroceryItemTag (
"Fridge & Deli",
GroceryItemTagEnum.FridgeAndDeli,
0xe026
),
new GroceryItemTag (
"Frozen",
GroceryItemTagEnum.Frozen,
0xf7ad
),
new GroceryItemTag (
"Bathroom",
GroceryItemTagEnum.Bathroom,
0xe06b
),
new GroceryItemTag (
"Health Food",
GroceryItemTagEnum.HealthFood,
0xf787
),
new GroceryItemTag (
"Household",
GroceryItemTagEnum.HouseHold,
0xf898
),
new GroceryItemTag (
"Pantry",
GroceryItemTagEnum.Pantry,
0xf7eb
),
new GroceryItemTag (
"Pet",
GroceryItemTagEnum.Pet,
0xf6d3
),
new GroceryItemTag (
"Other",
GroceryItemTagEnum.Other,
0xf39b
}});
builder.Entity<MenuItemTag>().HasData(
new MenuItemTag[] {
new MenuItemTag {
Name = "American",
Id = MenuItemTagEnum.American,
IconCodePoint = 0xf803
},
new MenuItemTag {
Name = "Asian",
Id = MenuItemTagEnum.Asian,
IconCodePoint = 0xf823
},
new MenuItemTag {
Name = "Bakery",
Id = MenuItemTagEnum.Bakery,
IconCodePoint = 0xf705
},
new MenuItemTag {
Name = "Barbecue",
Id = MenuItemTagEnum.Barbecue,
IconCodePoint = 0xf80f
},
new MenuItemTag {
Name = "Breakfast",
Id = MenuItemTagEnum.Breakfast,
IconCodePoint = 0xe002
},
new MenuItemTag {
Name = "Cafe",
Id = MenuItemTagEnum.Cafe,
IconCodePoint = 0xf6c5
},
new MenuItemTag {
Name = "Chinese",
Id = MenuItemTagEnum.Chinese,
IconCodePoint = 0xf823
},
new MenuItemTag {
Name = "Deli",
Id = MenuItemTagEnum.Deli,
IconCodePoint = 0xf81f
},
new MenuItemTag {
Name = "Desserts",
Id = MenuItemTagEnum.Desserts,
IconCodePoint = 0xf551
},
new MenuItemTag {
Name = "European",
Id = MenuItemTagEnum.European,
IconCodePoint = 0xf7a2
},
new MenuItemTag {
Name = "Fish & Chips",
Id = MenuItemTagEnum.FishAndChips,
IconCodePoint = 0xf7fe
},
new MenuItemTag {
Name = "Indian",
Id = MenuItemTagEnum.Indian,
IconCodePoint = 0xf156
},
new MenuItemTag {
Name = "French",
Id = MenuItemTagEnum.Fench,
IconCodePoint = 0xf7f6
},
new MenuItemTag {
Name = "German",
Id = MenuItemTagEnum.German,
IconCodePoint = 0xf820
},
new MenuItemTag {
Name = "Greek",
Id = MenuItemTagEnum.Greek,
IconCodePoint = 0xf68b
},
new MenuItemTag {
Name = "Health Food",
Id = MenuItemTagEnum.HealthFood,
IconCodePoint = 0xf81e
},
new MenuItemTag {
Name = "Italian",
Id = MenuItemTagEnum.Italian,
IconCodePoint = 0xf817
},
new MenuItemTag {
Name = "Japanese",
Id = MenuItemTagEnum.Japanese,
IconCodePoint = 0xf56a
},
new MenuItemTag {
Name = "Kebab",
Id = MenuItemTagEnum.Kebab,
IconCodePoint = 0xf821
},
new MenuItemTag {
Name = "Kiwi",
Id = MenuItemTagEnum.Kiwi,
IconCodePoint = 0xf535
},
new MenuItemTag {
Name = "Korean",
Id = MenuItemTagEnum.Korean,
IconCodePoint = 0xf159
}});
builder.Entity<GroceryItem>()
.Property(e => e.Tags)
.HasConversion(
v => JsonSerializer.Serialize(v, null),
v => JsonSerializer.Deserialize<List<GroceryItemTag>>(v, null),
new ValueComparer<IList<GroceryItemTag>>(
(c1, c2) => c1.SequenceEqual(c2),
c => c.Aggregate(0, (a, v) => HashCode.Combine(a, v.GetHashCode())),
c => (IList<GroceryItemTag>)c.ToList()));
}
public DbSet<GroceryItem> GroceryItems { get; set; }
public DbSet<GroceryItemGroceryStore> GroceryItemGroceryStores { get; set; }
public DbSet<MenuItemRestaurant> MenuItemRestaurants { get; set; }
public DbSet<MenuItem> MenuItems { get; set; }
public DbSet<GroceryStore> GroceryStores { get; set; }
public DbSet<GroceryItemTag> GroceryItemTags { get; set; }
public DbSet<MenuItemTag> MenuItemTags { get; set; }
public DbSet<Restaurant> Restaurants { get; set; }
}
}
单击转到定义确实转到相同的 GroceryItemTag。以前是这样的:
public class GroceryItemTag
{
public GroceryItemTagEnum Id { get; set; }
public int IconCodePoint {get; set;}
public string Name { get; set; }
}
但我从那个改过来了。
悬停错误:
为什么会出现此错误?
尝试完全限定名称:
我将 GroceryItemTag 添加到 namespace Vepo.Domain
。现在,当我单击转到 GroceryItemTag
上的定义时,它会将我带到 GroceryItemTag 的构造函数。并转到 GRoceryItemTag.GroceryItemTag 的定义说没有找到定义。
右键单击 new GroceryItemTag
中的 GroceryItemTag
,然后 Go To Defintion 并确保 VS 已解析与您的 [=13= 匹配的正确定义].
这种类型的错误看起来像是命名空间问题,但不管怎样,您的代码对于编译器来说显然是不明确的。
同时尝试在 new
表达式中使用完全限定的类型名称,这可能有助于识别冲突。
builder.Entity<GroceryItemTag>().HasData(
new Vepo.Domain.GroceryItemTag[] {
new Vepo.Domain.GroceryItemTag(
"Baby & Child",
GroceryItemTagEnum.BabyAndChild,
0xf77c
),
new Vepo.Domain.GroceryItemTag(
"Baking",
GroceryItemTagEnum.Baking,
0xf563
),...
因为你说的是c#5,我想说它和模式匹配有关,但我无法复制。