未在数据库中创建的模型上的字符串集合属性

本文关键字:字符串 集合 属性 模型 数据库 创建 | 更新日期: 2023-09-27 18:04:27

我创建了一个名为Tag的类。

public class Tag
{
    [Key]
    [DatabaseGeneratedAttribute(DatabaseGeneratedOption.Identity)]
    public int TagId { get; set; }
    public string Name { get; set; }
    public virtual ICollection<string> Synonyms { get; set; }
}

我如何得到Synonyms属性进入数据库?

我必须为它创建一个模型吗?

未在数据库中创建的模型上的字符串集合属性

是的,你必须创建一个Model,也许这样做:

public class Tag
{
    [Key]
    [DatabaseGeneratedAttribute(DatabaseGeneratedOption.Identity)]
    public int TagId { get; set; }
    public string Name { get; set; }
    public virtual ICollection<Synonym> Synonyms { get; set; }
}

然后你的同义词模型:

public class Synonym
{
    [Key, DatabaseGenerated(DatabaseGeneratedOption.Identity)]
    [HiddenInput(DisplayValue = false)]
    public int SynonymId { get; set; }
    [ForeignKey("Tag"), DatabaseGenerated(DatabaseGeneratedOption.None)]
    public int TagId { get; set; }
    public string Name { get; set; }
    public virtual Tag Tag { get; set; }
}

你必须用实体类来包装它

public class Synonym
{
  int SynonymId {get; set;}
  string Synonym {get; set;}
}

或将集合扁平化为单独的字符串字段

例句:

public class Tag
{
    [Key]
    [DatabaseGeneratedAttribute(DatabaseGeneratedOption.Identity)]
    public int TagId { get; set; }
    public string Name { get; set; }
    public string SynStore {get; set;}
    public IEnumerable<string> Synonyms 
{
    set { SynStore = String.Join(',', value);}
    get{ return SynStore.split(','); }
}
}