我正在从我的SQL Server数据库构建我的EF(v4.0.30319)数据模型。每个表都有Created
和Updated
个字段,通过数据库触发器填充。
此数据库是ASP.NET Web API应用程序的后端,我最近发现了一个问题。问题是,由于传递到api端点的模型中没有填充Created
和Updated
字段,因此它们将作为NULL
写入数据库。这会覆盖数据库中已存在的所有值。
我发现我可以编辑EF数据模型,只需从实体中删除这两列。它有效,日期时间不会被NULL
覆盖。但这会导致另一个不太严重但更烦人的问题...我的数据模型有一堆包含这些属性的表,所有表都需要通过删除这两列来更新。
有没有办法告诉EF忽略整个数据模型中实体中的某些列而不手动删除它们?
答案 0 :(得分:1)
据我所知,没有。从数据库生成模型将始终创建数据库表中的所有字段。好吧,只要它有一个主键就可以了。
可以只更新所需的字段,即不在创建和更新方法中包含“已创建”和“已更新”字段。我不得不说,我认为如果这些领域在那个时候甚至不存在于模型上会更好。您可能会在某个时刻看到模型上的那些字段,而不记得它们不会持久存储到数据库中。
当您调用create()和update()方法时,您可能希望仅考虑将日期时间插入到这些字段中。然后你可以放弃触发器。您显然希望为所有数据库操作使用类库,因此此功能将集中在一个位置。为了保持它的美观和整洁,你知道吗?