Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在MVC4项目中首先使用实体框架代码进行数据库设计(SQLCE)-几个问题_C#_Sql Server_Asp.net Mvc_Entity Framework_Database Design - Fatal编程技术网

C# 在MVC4项目中首先使用实体框架代码进行数据库设计(SQLCE)-几个问题

C# 在MVC4项目中首先使用实体框架代码进行数据库设计(SQLCE)-几个问题,c#,sql-server,asp.net-mvc,entity-framework,database-design,C#,Sql Server,Asp.net Mvc,Entity Framework,Database Design,在我正在开发的应用程序中,向用户提供了许多他们应该个性化的偏好。以下描述了我认为应该如何实施: 优先选择: public enum Weighting { One, Two, Three, Four, Five, Six, Seven, Eight, Nine, Ten } public class PreferenceOption { public bool PreferenceOptionSelected { get; set; }

在我正在开发的应用程序中,向用户提供了许多他们应该个性化的偏好。以下描述了我认为应该如何实施:

优先选择:

public enum Weighting { One, Two, Three, Four, Five, 
                        Six, Seven, Eight, Nine, Ten }

public class PreferenceOption
{
    public bool PreferenceOptionSelected { get; set; }
    public Weighting Weighting { get; set; }
}
选择的优先选项很可能是一个布尔;如果选中,用户可以添加权重,如果未选中,则不能应用权重,但应用程序仍需要知道其值为false-这便于以后搜索

用于保存所有可用首选项的类:

public class PreferenceOptions
{
    public PreferenceOption WantsHouse = new PreferenceOption()
    { PreferenceOptionSelected = false, Weighting = Weighting.One };
    // ... could be up to 15/20 options   
}
public class UserPreferences
{
    public List<PreferenceOptions> UserPreferences { get; set; }
}
用于保存用户选定/个人首选项的类:

public class PreferenceOptions
{
    public PreferenceOption WantsHouse = new PreferenceOption()
    { PreferenceOptionSelected = false, Weighting = Weighting.One };
    // ... could be up to 15/20 options   
}
public class UserPreferences
{
    public List<PreferenceOptions> UserPreferences { get; set; }
}
公共类用户首选项
{
公共列表用户首选项{get;set;}
}
问题:

  • 这种设计是实现这种场景的最佳方式吗

  • 我先用EF代码。这3个类是否需要作为实体持久存在于数据库中?或者,
    PreferenceOption
    PreferenceOptions
    是否仅存在于内存中,并用于帮助获得用户首选项的最终“列表”。这是我无法理解的部分。如何最好地存储用户的首选项?这张桌子是什么样的

  • 列表是我关于如何存储用户偏好的第一个想法,但我知道直接列表不能存储在一行中,但如果序列化为XML,它可以存储在一行中。用户的偏好对于以后的搜索很重要,如果我使用XML方法,那么在搜索之前进行反序列化将效率低下/导致性能开销。有没有更好的方法来实现我的想法


  • 首选项是面向应用层还是面向数据层?也就是说,您希望使用权重值作为数据库中某个查询的一部分,还是希望在应用程序代码中使用它来处理返回的结果?此外,每个用户的首选项数量是否相同,或者每个用户是否灵活?WantHouse的数量和含义是否固定,或者该部分是否是动态的?是的,权重将用作数据库中某些查询的一部分,例如,如果某个特定选项的权重为1,则数据库中的某些记录可能会被忽略,如果是10,一些记录肯定会被返回——如果这有意义的话?任何用户都将获得相同数量的选项,所有选项都是必需的-但如果用户不选择使用该选项,则仍应记录其值false,因为这可能/将影响搜索结果。@SWeko,PreferenceOption的实例数量很可能是固定的,但未来有可能增加另一种选择。它们的含义将始终代表实例名称,即WantHouse。这就是你的意思吗?还有问题吗?也许是一个意见/答案?