簡體   English   中英

如何儲存清單 <string> 在MySQL數據庫

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM