我试图先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] 删除。
我来说两句