C# 如何存储列表<;字符串>;在MySql数据库中
我在一个角色访问基础控制项目中工作,我需要在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
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);}
}
有关映射私有属性的示例代码:
不要将列表存储为列表。循环浏览它们并存储单个记录。如果你不知道为什么,我已经听说了这本书的好东西,数据库设计为纯粹的凡人。萨克斯我会看看那本书@丹布拉克