如何使用实体框架解决“不支持每种类型的多个对象集”问题

沃尔夫冈·罗斯

我试图先dbcontext为我的FHEM数据库构建代码

该数据库包含两个表current,并history具有完全相同的架构。SQL创建命令如下所示:

CREATE TABLE current 
( 
     TIMESTAMP TIMESTAMP, 
     DEVICE varchar(64), 
     TYPE varchar(64), 
     EVENT varchar(512), 
     READING varchar(64), 
     VALUE varchar(128), 
     UNIT varchar(32)
)

CREATE TABLE history 
( 
     TIMESTAMP TIMESTAMP, 
     DEVICE varchar(64), 
     TYPE varchar(64), 
     EVENT varchar(512), 
     READING varchar(64), 
     VALUE varchar(128), 
     UNIT varchar(32)
)

因此,dbcontext应如下所示:

  public class FhemContext : DbContext
  {
        public virtual DbSet<LogEntries> History { get; set; }
        public virtual DbSet<LogEntries> Current{ get; set; }
  }

LogEntries类并不完全融入实体框架表的概念,但应该是这样的:

public class History
{
    public DateTime Timestamp { get; set; }
    public string DEVICE { get; set; }
    public string TYPE { get; set; }
    public string EVENT { get; set; }
    public string READING { get; set; }
    public string VALUE { get; set; }
    public string UNIT { get; set; }
}

为了适合该架构,我认为我必须添加一个类型为int的属性“ currentId”或“ historyId”。

但这是另一个问题。

我该如何声明该类FhemContext以满足实体框架的限制,并符合FHEM的原始数据库架构?

  • 也许我应该添加一个标记列来定义该行是当前行还是历史行?但是这两个表背后的想法似乎是,由于行数的原因,对当前表的访问总是比对历史表的​​访问快。

沃尔夫冈的问候

这是现在对我有用的代码:

public class LogEntry
{
    [Key]
    public DateTime Timestamp { get; set; }
    public string DEVICE { get; set; }
    public string TYPE { get; set; }
    public string EVENT { get; set; }
    public string READING { get; set; }
    public string VALUE { get; set; }
    public string UNIT { get; set; }
}

public class Current : LogEntry
{
}

public class History : LogEntry
{
}

public class FhemContext : DbContext
{
    public virtual DbSet<History> History { get; set; }
    public virtual DbSet<Current> Current{ get; set; }
}

class Program
{
    static void Main(string[] args)
    {
        var db = new FhemContext();
        Console.WriteLine(db.Current.Count());
        Console.WriteLine(db.History.Count());

        History historyentry = new History { Timestamp = DateTime.Now };
        db.History.Add(historyentry);
        db.SaveChanges();

        Current currentEntry = new Current{ Timestamp = DateTime.Now };
        db.Current.Add(currentEntry);
        db.SaveChanges();
    }
}
麦可

这会有所帮助吗?

public class FhemContext : DbContext
{
    public virtual DbSet<History> History { get; set; }
    public virtual DbSet<Current> Current{ get; set; }
}

public class LogEntry
{
    public DateTime Timestamp { get; set; }
    public string DEVICE { get; set; }
    public string TYPE { get; set; }
    public string EVENT { get; set; }
    public string READING { get; set; }
    public string VALUE { get; set; }
    public string UNIT { get; set; }
}

public class Current : LogEntry
{
}

public class History : LogEntry
{
}

然后将“历史记录”类型映射到表历史记录等等。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

MVC 5不支持每种类型的多个对象集

来自分类Dev

每个类型不支持多个对象集?

来自分类Dev

数据集不支持System.Nullable <>。实体框架

来自分类Dev

ASP.NET身份-每个类型不支持多个对象集

来自分类Dev

每个类型不支持多个对象集。对象集IdentityUsers和Users都可以包含类型的实例

来自分类Dev

如何解决Swift不支持一流的元类型的问题?

来自分类Dev

如何解决系列数据点不支持类型值的问题?

来自分类Dev

实体框架中每种类型的流利表映射

来自分类Dev

实体框架:软删除和每种类型的表

来自分类Dev

每个类型不支持多个对象集。对象集“ ApplicationUsers”和“ Users”都可以包含类型为ApplicationUser的实例

来自分类Dev

SQLAlchemy不支持的类型问题Python

来自分类Dev

类型错误:“ builtin_function_or_method”对象不支持项目分配。我该如何解决?

来自分类Dev

实体框架核心5似乎不支持Where / Include

来自分类Dev

实体框架 2.0 不支持 DNX 5.0 版

来自分类Dev

如何建立一对一的关系,每种关系只有七种类型之一-实体框架

来自分类Dev

类型错误:填充 TF 数据集对象当前不支持填充稀疏张量的批处理

来自分类Dev

播放框架返回 415(不支持的媒体类型)

来自分类Dev

如何解决此问题[警告:忽略文件,文件是为不支持的文件格式构建的]

来自分类Dev

如何解决不支持的parse_mode问题?

来自分类Dev

python3.4,<<不支持的操作数类型,我该如何解决?

来自分类Dev

TypeError: 不支持 & 的操作数类型:'str' 和 'str' 如何解决

来自分类Dev

不支持多个对象集。创建角色时,对象集“ ApplicationUsers”和“ Users”都可以包含ApplicationUser的实例

来自分类Dev

不支持的格式字符“;”。无法解决这个问题

来自分类Dev

如何在实体框架6中使用Azure函数V3(System.Data.SqlClient除外:此平台不支持System.Data.SqlClient)?

来自分类Dev

如何在IE11中解决:对象不支持属性或方法'padStart'

来自分类Dev

如何在实体框架支持的 datagridview 上使用多个查询?

来自分类Dev

删除每种类型实体框架的前十名以外的所有内容

来自分类Dev

在C#实体框架中的SQL连接字符串中使用端口:不支持的关键字:“端口”

来自分类Dev

Python TypeError:“类型”对象不支持项目分配

Related 相关文章

  1. 1

    MVC 5不支持每种类型的多个对象集

  2. 2

    每个类型不支持多个对象集?

  3. 3

    数据集不支持System.Nullable <>。实体框架

  4. 4

    ASP.NET身份-每个类型不支持多个对象集

  5. 5

    每个类型不支持多个对象集。对象集IdentityUsers和Users都可以包含类型的实例

  6. 6

    如何解决Swift不支持一流的元类型的问题?

  7. 7

    如何解决系列数据点不支持类型值的问题?

  8. 8

    实体框架中每种类型的流利表映射

  9. 9

    实体框架:软删除和每种类型的表

  10. 10

    每个类型不支持多个对象集。对象集“ ApplicationUsers”和“ Users”都可以包含类型为ApplicationUser的实例

  11. 11

    SQLAlchemy不支持的类型问题Python

  12. 12

    类型错误:“ builtin_function_or_method”对象不支持项目分配。我该如何解决?

  13. 13

    实体框架核心5似乎不支持Where / Include

  14. 14

    实体框架 2.0 不支持 DNX 5.0 版

  15. 15

    如何建立一对一的关系,每种关系只有七种类型之一-实体框架

  16. 16

    类型错误:填充 TF 数据集对象当前不支持填充稀疏张量的批处理

  17. 17

    播放框架返回 415(不支持的媒体类型)

  18. 18

    如何解决此问题[警告:忽略文件,文件是为不支持的文件格式构建的]

  19. 19

    如何解决不支持的parse_mode问题?

  20. 20

    python3.4,<<不支持的操作数类型,我该如何解决?

  21. 21

    TypeError: 不支持 & 的操作数类型:'str' 和 'str' 如何解决

  22. 22

    不支持多个对象集。创建角色时,对象集“ ApplicationUsers”和“ Users”都可以包含ApplicationUser的实例

  23. 23

    不支持的格式字符“;”。无法解决这个问题

  24. 24

    如何在实体框架6中使用Azure函数V3(System.Data.SqlClient除外:此平台不支持System.Data.SqlClient)?

  25. 25

    如何在IE11中解决:对象不支持属性或方法'padStart'

  26. 26

    如何在实体框架支持的 datagridview 上使用多个查询?

  27. 27

    删除每种类型实体框架的前十名以外的所有内容

  28. 28

    在C#实体框架中的SQL连接字符串中使用端口:不支持的关键字:“端口”

  29. 29

    Python TypeError:“类型”对象不支持项目分配

热门标签

归档