如果我有以下实体:
public class PocoWithDates
{
public string PocoName { get; set; }
public DateTime CreatedOn { get; set; }
public DateTime LastModified { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
这对应于具有相同名称/属性的SQL Server 2008表...
我怎么能自动:
当我自动说,我的意思是我希望能够做到这一点:
poco.Name = "Changing the name";
repository.Save();
Run Code Online (Sandbox Code Playgroud)
不是这个:
poco.Name = "Changing the name";
poco.LastModified = DateTime.Now;
repository.Save();
Run Code Online (Sandbox Code Playgroud)
在幕后,"某事"应该自动更新日期时间字段.什么是"东西"?
我正在使用Entity Framework 4.0 - 有没有一种方法可以让EF为我自动执行此操作?(EDMX中的特殊设置可能?)
从SQL Server端,我可以使用DefaultValue,但这只适用于INSERT(不是UPDATE).
类似地,我可以使用POCO上的构造函数设置默认值,但这只会在实例化对象时起作用.
当然我可以使用触发器,但它并不理想.
因为我正在使用Entity Framework,我可以挂钩到SavingChanges事件并在这里更新日期字段,但问题是我需要"了解"POCO(目前,我的存储库是用泛型实现的).我需要做一些OO技巧(比如让我的POCO实现一个接口,然后调用一个方法).我并不反对,但如果我必须这样做,我宁愿手动设置字段.
我基本上在寻找SQL Server …
.net c# sql-server-2008 entity-framework-4 datetime-generation
在我们的应用程序的每个SQL表中,我们都有"CreatedDate"和"ModifiedDate"列.我们正在使用DB第一种方法.当我保存数据时,我希望自动填充这两列.一种方法是getdate()在SQL表列本身上使用默认值.所以这将部分地解决问题.这意味着当实体是新的时,它将设置CreatedDate和ModifiedDate.但是,当我编辑/更新实体时,我只想ModifiedDate更新.
使用Code第一种方法有很多文章在做这件事.但我们正在使用DB第一种方法.
我有什么选择?
标题是不言自明的。是否存在内置机制来支持Entity Framework Core中代码优先数据库中记录的创建和编辑时间戳记?
喜欢的东西:created_at,并:updated_at在Ruby on Rails的迁移。我找不到与此有关的任何文档。如果没有现成的机制,是否有最佳实践来实现这些列?