[英]How to store a List<string> in MySql db
我正在一個“角色訪問基礎控制”項目中工作,我需要在每個角色的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>();
}
}
我要存儲公共虛擬List<string> Permissions { get; set; }
每個角色都有權限List<string> Permissions { get; set; }
List<string> Permissions { get; set; }
List<string> Permissions { get; set; }
但是當我嘗試在Role db Table中插入一些記錄時,沒有字符串List<string> Permissions { get; set; }
的列List<string> Permissions { get; set; }
List<string> Permissions { 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
}
這是插入后MySql db Roles Table顯示的內容:
var l = new List<string>() { "Permission1", "Permission2", "Permission3" };
我要插入的內容不在表格中。
我正在使用Entity Framework 5 + MySql db + C#
希望玩具人能幫助我!
您可以將角色作為單個逗號分隔的字符串存儲在私有屬性中:
並從RolesInternal讀取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); }
}
有關映射私有屬性的示例代碼:
http://romiller.com/2012/10/01/mapping-to-private-properties-with-code-first/
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.