我可以在SQL Server 2016中使用时态表.遗憾的是,Entity Framework 6还不知道这个功能.是否有可能使用实体框架6 使用新的查询选项(请参阅msdn)?
我创建了一个带有员工时态表的简单演示项目:
我使用edmx将表映射到实体(感谢Matt Ruwe):
使用纯sql语句一切正常:
using (var context = new TemporalEntities())
{
var employee = context.Employees.Single(e => e.EmployeeID == 2);
var query =
$@"SELECT * FROM [TemporalTest].[dbo].[{nameof(Employee)}]
FOR SYSTEM_TIME BETWEEN
'0001-01-01 00:00:00.00' AND '{employee.ValidTo:O}'
WHERE EmployeeID = 2";
var historyOfEmployee = context.Employees.SqlQuery(query).ToList();
}
Run Code Online (Sandbox Code Playgroud)
是否可以在没有纯SQL的情况下将历史记录功能添加到每个实体?我的解决方案作为实体扩展与反射来操纵SQL查询IQuerable并不完美.是否有现有的扩展或库来执行此操作?
编辑:(基于Pawel的评论)
我试图使用表值函数:
CREATE FUNCTION dbo.GetEmployeeHistory(
@EmployeeID int,
@startTime datetime2,
@endTime datetime2)
RETURNS TABLE
AS
RETURN
(
SELECT
EmployeeID,
[Name],
Position,
Department,
[Address], …Run Code Online (Sandbox Code Playgroud) 我正在构建一个应用程序,当我想在我的表单表中插入一个表单时,我收到以下错误:
当 IDENTITY_INSERT 设置为 OFF 时,无法为表 'Relation' 中的标识列插入显式值。
这些是我的模型:
表格型号:
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public int Id { get; set; }
[ForeignKey("FormType")]
public int? TypeId { get; set; }
public virtual FormType Type { get; set; }
[ForeignKey("FormStatusType")]
public int? StatusTypeId { get; set; }
public virtual FormStatusType StatusTknype { get; set; }
[ForeignKey("Relation")]
public int? SupplierId { get; set; }
public virtual Relation Supplier { get; set; }
[ForeignKey("Relation")]
public int? CustomerId { get; set; }
public virtual Relation Customer { get; …Run Code Online (Sandbox Code Playgroud) 在我使用c#编写的新WPF项目中,我想尝试使用Entity Framework Core与我的SQL Server数据库进行交互。
每次尝试将模型添加到上下文中时,都会出现以下错误
当IDENTITY_INSERT设置为OFF时,无法为表“订单”中的标识列插入显式值。
我正在使用Repository和UnitOfWork包装实体框架核心方法来执行所需的工作。
但最简单地说,我正在执行以下代码
var order = new Order();
order.Title = "some";
....
Context.Orders.Add(order);
Context.SaveChanges();
Run Code Online (Sandbox Code Playgroud)
这是我的模特
public class Order
{
[Key]
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public Int64 Id { get; set; }
public string Status { get; set; }
public int? CustomerId { get; set; }
public DateTime? Birthdate { get; set; }
public int UtcOffset { get; set; }\
public DateTime CreatedAt { get; set; }
public DateTime? UpdatedAt { get; set; …Run Code Online (Sandbox Code Playgroud)