C# 如何存储列表<;字符串>;在MySql数据库中

C# 如何存储列表<;字符串>;在MySql数据库中,c#,mysql,sql,entity-framework,list,C#,Mysql,Sql,Entity Framework,List,我在一个角色访问基础控制项目中工作,我需要在Mysql数据库中为每个角色存储一个列表。这是我的密码 public class LoginModel { [Key] public int lm_Id { get; set; } public string User { get; set; } public string Pass { get; set; } public virtual ICollection<Roles> roles { get

我在一个角色访问基础控制项目中工作,我需要在Mysql数据库中为每个角色存储一个列表。这是我的密码

public class LoginModel
{
    [Key]
    public int lm_Id { get; set; }
    public string User { get; set; }
    public string Pass { get; set; }
    public virtual ICollection<Roles> roles { get; set; }

    public LoginModel()
    {
        roles = new HashSet<Roles>();
    }
}

public class Roles
{
    [Key]
    public int role_Id { get; set; }
    public string Name { get; set; }
    public virtual ICollection<LoginModel> Users { get; set; }
    public virtual List<string> Permissions { get; set; }

    public Roles(){
       Users = new List<LoginModel>();
    }
}
公共类登录模型
{
[关键]
公共int lm_Id{get;set;}
公共字符串用户{get;set;}
公共字符串传递{get;set;}
公共虚拟ICollection角色{get;set;}
公共登录模型()
{
roles=newhashset();
}
}
公共类角色
{
[关键]
公共int角色_Id{get;set;}
公共字符串名称{get;set;}
公共虚拟ICollection用户{get;set;}
公共虚拟列表权限{get;set;}
公共角色(){
用户=新列表();
}
}
每个角色都有一个权限列表,我想存储公共虚拟
列表权限{get;set;}
但是当我尝试在我的角色数据库表中插入一些记录时,没有一个字符串列表的列
列表权限{get;set;}

using (var db = new MySqlContext())
{

    #region insert


    var l = new List<string>() { "Permission1", "Permission2", "Permission3" };
    db.LoginModel.Add(

        new LoginModel
        {
            User = "rafa",
            Pass = "123",
            roles =
            {
                new Roles {Name = "usuario", Permissions = l},
                new Roles {Name = "usuario2", Permissions = l}
            }

        }

    );

    db.LoginModel.Add(
        new LoginModel
        {
            User = "Ralph",
            Pass = "123",
            roles =
            {
                new Roles {Name = "Admin", Permissions = l},
                new Roles {Name = "Admin2", Permissions = l}
            }

        }

    );
    db.SaveChanges();

    #endregion

}
使用(var db=new MySqlContext())
{
#区域插入
var l=新列表(){“Permission1”、“Permission2”、“Permission3”};
db.LoginModel.Add(
新LoginModel
{
User=“rafa”,
Pass=“123”,
角色=
{
新角色{Name=“usuario”,权限=l},
新角色{Name=“usuario2”,权限=l}
}
}
);
db.LoginModel.Add(
新LoginModel
{
User=“Ralph”,
Pass=“123”,
角色=
{
新角色{Name=“Admin”,权限=l},
新角色{Name=“Admin2”,权限=l}
}
}
);
db.SaveChanges();
#端区
}
以下是MySql db角色表在插入后显示的内容:

var l=newlist(){“Permission1”、“Permission2”、“Permission3”}不在表中

我使用的是实体框架5+MySql db+C#


希望玩具人能帮我

您可以将私有属性中的角色存储为单个逗号分隔字符串:

并从RoleInternal读取Roles属性:

    private string RolesInternal { get; set; }

    [NotMapped]
    public List<string> Roles
    {
        get { return RolesInternal.Split(new[] {','}, StringSplitOptions.RemoveEmptyEntries).Select(t => t).ToList(); }
        set { RolesInternal = string.Join(",", value); }
    }
私有字符串角色内部{get;set;}
[未映射]
公共列表角色
{
获取{return RolesInternal.Split(new[]{',},StringSplitOptions.removemptyentries)。选择(t=>t.ToList();}
set{RolesInternal=string.Join(“,”,value);}
}
有关映射私有属性的示例代码:


不要将列表存储为列表。循环浏览它们并存储单个记录。如果你不知道为什么,我已经听说了这本书的好东西,数据库设计为纯粹的凡人。萨克斯我会看看那本书@丹布拉克