我有我的模型页面,但我似乎无法做的一件事就是获取一个列表/数组的属性。
using Microsoft.AspNetCore.Mvc;
using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.Linq;
using System.Threading.Tasks;
namespace MVCPractuce.Models
{
public class Stoof
{
public int StoreID { get; set; }
public string StoreName { get; set; }
public int StoreYear { get; set; }
public decimal StoreCost { get; set; }
public string StoreMotto { get; set; }
public int StoreLikes { get; set; }
public List<string> StoreItems { get; set; }
public Stoof()
{
}
}
}
我收到无法映射的错误,因为它的类型为 List,不支持原始类型。有人知道我该如何解决这个问题吗?
公共 ICollection StoreItems { 获取;放; }
ICollection 需要是 StoreItems 类型。然后将外键引用添加到 StoreItems 实体中以进行正确的映射
一种方法就是上面提到的,你可以创建一个新类,然后使用一对多关系。
另一种方法是转换它,你可以使用以下代码:
在你的情况下(
using System.Text.Json;
)
protected override void OnModelCreating(ModelBuilder builder)
{
//...
builder.Entity<Stoof>()
.Property(e => e.StoreItems)
.HasConversion(
v => JsonSerializer.Serialize(v, default),
v => JsonSerializer.Deserialize<List<string>>(v, default));
//...
}
迁移和更新数据库。
测试结果:
我使用了预览答案,但由于错误而更改了
protected override void OnModelCreating(ModelBuilder mb)
{
base.OnModelCreating(mb);
mb.Entity<ReportSchedule>()
.Ignore(e => e.Conditions)
.Property(e => e.SelectedFields)
.HasConversion(
v => JsonSerializer.Serialize(v, new JsonSerializerOptions()), // Certifique-se de usar o System.Text.Json
v => JsonSerializer.Deserialize<List<string>>(v, new JsonSerializerOptions()));
mb.ApplyConfigurationsFromAssembly(typeof(AppDbContext).Assembly);
}