实体框架6中的单行表

rmn*_*blm 6 c# sql entity-framework entity-framework-6

我无法找到解决这个问题的方法,但标题清楚地说明了我想要的内容.

是否可以创建单个行表(我只需要在表中存储一个布尔值)?如何使用Fluent API配置此约束?

Kri*_*hna 1

您可以将其中一列设为主要列,并且只允许一个值。不幸的是,Fluent api 目前不支持默认值

public class StatusIdentifer
{
  [DefaultValue("1")]
  [Key]
  public int id {get; set}; //set can be removed here?
  public bool status {get:set;} //your boolean value
}
Run Code Online (Sandbox Code Playgroud)

诀窍是不要公开 id 的任何设置方法。

在数据库级别,您仍然可以打破范式。这里的答案告诉我们如何创建检查约束

public void InitializeDatabase(MyRepository context) {
            if (!context.Database.Exists() || !context.Database.ModelMatchesDatabase()) {
                context.Database.DeleteIfExists();
                context.Database.Create();

                context.ObjectContext.ExecuteStoreCommand("CREATE UNIQUE CONSTRAINT...");
                context.ObjectContext.ExecuteStoreCommand("CREATE INDEX...");
                context.ObjectContext.ExecuteStoreCommand("ETC...");
            }
        }
Run Code Online (Sandbox Code Playgroud)