假设我有一些用户可配置的设置,我想在SQL Server中保存并使用LINQ进行查询/操作:
public enum PreferenceType
{
NamePublic,
EmailPublic,
BirthdayPublic,
Visibility
}
前三个是布尔,但Visibility
我想成为它自己的枚举......
public enum Visibility
{
Normal,
Hidden,
FriendsOnly
}
我在类中包含成员数据:
public class Preference
{
public int Id { get; set; }
public PreferenceType Type { get; set; }
public object Value { get; set; }
}
public class Member
{
public int Id { get; set; }
public string Name { get; set; }
public string Email { get; set; }
public DateTime Birthday { get; set; }
[...]
public virtual ICollection<Preference> Preferences { get; set; }
}
在我的数据环境中:
public DbSet<Member> Members { get; set; }
既然我们已经全部成立,这甚至可能吗?我希望能够在查询和其他地方轻松保存和访问这些用户首选项的值。例如:
List<Member> query = Members.Where(m =>
m.Preferences.Any(v => v.Type == PreferenceType.Visibility
&& (Visibility)Enum.Parse(typeof(Visibility), v.Value) == Visibility.Normal));
我是否在正确的轨道上,甚至是关闭?我甚至想做什么?如果没有,考虑到它们可能是不同的数据类型,使用LINQ在数据库中存储和检索各种用户首选项的最佳实践是什么?我是否只需要使用包含所有内容的字符串的简单名称/值对?