实体框架代码第一个原始集合

问题描述 投票:2回答:2

鉴于以下简单场景,保持简单原始集合的最佳/简单方法是什么?

public class Subscriber
{
    public int Id { get; set; }
    public string Email { get; set; }
    public ICollection<int> SubscribedNodeIds { get; set; }
}

如果我执行上面的示例,则忽略SubscribedNodeIds列。

entity-framework-4.1
2个回答
0
投票

显而易见的答案是创建这样的关系:

public class Subscriber
{
    public int Id { get; set; }
    public string Email { get; set; }
    public ICollection<Subscription> Subscriptions { get; set; }
}

public class Subscription
{
    public int Id { get; set; }
    public int NodeId { get; set; }
    public Subscriber Subscriber { get; set; }
}

0
投票

创建一个新的实体和关系是一项艰苦的工作。相反,我们可以执行以下简单的2个步骤

使用[NotMapped]注释集合字段,以便它不会添加到数据库中

添加字符串属性并使用Json序列化程序将基元集合转换为字符串。

代码如下

public class Subscriber
{
    public int Id { get; set; }
    public string Email { get; set; }
    [NotMapped]`enter code here`
    public ICollection<int> SubscribedNodeIds { get; set; }
    public string SubscribedNodeIdsString 
    {
        get => JsonConvert.SerializeObject(SubscribedNodeIds);
        set
        {
            if (value != null)
            {
                SubscribedNodeIds = JsonConvert.DeserializeObject<List<Int>>(value);                    
            }
        }
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.